728x90
반응형
상태 패턴(State Pattern)은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나입니다. Swift에서도 상태 패턴을 활용하여 객체의 상태에 따라 동작을 변경하고, 유지 보수 가능하고 확장 가능한 코드를 작성할 수 있습니다. 이 블로그 포스트에서는 상태 패턴의 개념을 소개하고, Swift로 구현된 예제를 통해 상태 패턴의 사용법을 알아보겠습니다.
상태 패턴의 개념: 상태 패턴은 객체의 내부 상태에 따라 동작을 변경하는 패턴입니다. 객체는 여러 가지 상태를 가지며, 상태에 따라 다른 동작을 수행합니다. 상태 패턴을 사용하면 조건문을 피하고 객체의 상태에 대한 처리를 캡슐화할 수 있어 코드의 가독성과 유지 보수성을 높일 수 있습니다.
상태 패턴 예제:
protocol State {
func doAction(context: Context)
}
class ConcreteStateA: State {
func doAction(context: Context) {
print("Performing action in Concrete State A")
context.state = ConcreteStateB()
}
}
class ConcreteStateB: State {
func doAction(context: Context) {
print("Performing action in Concrete State B")
context.state = ConcreteStateA()
}
}
class Context {
var state: State
init(state: State) {
self.state = state
}
func request() {
state.doAction(context: self)
}
}
위의 예제에서는 State 프로토콜을 정의하고, ConcreteStateA와 ConcreteStateB 클래스가 이를 구현합니다. Context 클래스는 상태를 관리하며, request() 메서드를 통해 상태에 따라 동작을 수행합니다.
사용 예시:
let context = Context(state: ConcreteStateA())
context.request()
context.request()
위의 예시에서는 초기 상태로 ConcreteStateA를 설정한 후, request() 메서드를 호출하여 상태에 따라 동작을 수행합니다. 첫 번째 호출은 ConcreteStateA에서 ConcreteStateB로 상태를 변경하고, 두 번째 호출은 ConcreteStateB에서 ConcreteStateA로 상태를 변경합니다.
728x90
반응형
'Swift' 카테고리의 다른 글
Swift에서 전략 패턴(Strategy Pattern)의 개념과 예제 (0) | 2023.06.15 |
---|---|
Swift에서 이터레이터 패턴(Iterator Pattern)의 개념과 예제 (0) | 2023.06.15 |
Swift에서 템플릿 메소드 패턴(Template Method Pattern)의 개념과 예제 (0) | 2023.06.15 |
Swift에서 팩토리 메서드 패턴(Factory Method Pattern)의 개념과 예제 (0) | 2023.06.15 |
Swift에서 추상 팩토리 패턴(Abstract Factory Pattern)의 개념과 예제 (0) | 2023.06.15 |