[swift] 클래스의 상태(State) 패턴 적용
클래스의 상태(State) 패턴은 객체의 상태에 따라 동작을 변경하는 패턴입니다. 이 패턴은 객체의 행위를 상태에 따라 캡슐화하여, 객체가 자신의 상태에 따라 행위를 변경할 수 있도록 돕습니다.
Swift 언어로 상태 패턴을 적용한 예제를 살펴보겠습니다.
상태(State) 프로토콜 정의
protocol State {
func doAction(context: Context)
}
위 코드는 State
프로토콜을 정의한 것입니다. 해당 프로토콜은 상태에 대한 행위를 정의합니다.
구체적인 상태(State) 객체 정의
class StartState: State {
func doAction(context: Context) {
print("Player is in start state")
context.state = self
}
}
class StopState: State {
func doAction(context: Context) {
print("Player is in stop state")
context.state = self
}
}
위 코드는 StartState
와 StopState
클래스로 각각의 상태에 대한 행위를 구현한 것입니다.
Context 클래스 정의
class Context {
var state: State
init(state: State) {
self.state = state
}
func doAction() {
state.doAction(context: self)
}
}
Context
클래스는 상태를 가지고 있으며, 현재 상태에 따라 행위를 수행하는 doAction
메서드를 가지고 있습니다.
상태 패턴 적용
let context = Context(state: StartState())
context.doAction()
context.doAction()
위 코드는 Context
클래스를 생성하고 초기 상태를 StartState
로 설정한 후, doAction
메서드를 호출하는 예제입니다.
이렇게 상태 패턴을 적용하면 객체의 행위를 쉽게 확장하고 상태에 따라 분리할 수 있어 유지 보수가 용이해집니다.