728x90
반응형
데코레이터 패턴(Decorator Pattern)은 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나입니다. Swift에서도 데코레이터 패턴을 활용하여 객체에 동적으로 기능을 추가하거나 수정할 수 있습니다. 이 블로그 포스트에서는 데코레이터 패턴의 개념을 소개하고, Swift로 구현된 예제를 통해 데코레이터 패턴의 사용법을 알아보겠습니다.
데코레이터 패턴의 개념: 데코레이터 패턴은 기존 객체의 동작을 수정하지 않고, 추가 기능을 런타임에 동적으로 부여할 수 있는 패턴입니다. 이 패턴은 객체의 확장성을 높이고, 객체 간의 결합도를 낮추면서도 새로운 기능을 추가할 수 있습니다. 데코레이터 패턴은 객체를 감싸는 래퍼(Wrapper) 클래스를 사용하여 기능을 추가합니다.
데코레이터 패턴 예제:
protocol Component {
func operation() -> String
}
class ConcreteComponent: Component {
func operation() -> String {
return "ConcreteComponent"
}
}
class Decorator: Component {
private let component: Component
init(component: Component) {
self.component = component
}
func operation() -> String {
return component.operation()
}
}
class ConcreteDecoratorA: Decorator {
override func operation() -> String {
return "ConcreteDecoratorA, " + super.operation()
}
}
class ConcreteDecoratorB: Decorator {
override func operation() -> String {
return "ConcreteDecoratorB, " + super.operation()
}
}
위의 예제에서는 Component 프로토콜을 정의하고, ConcreteComponent 클래스가 이를 구현합니다. Decorator 클래스는 Component를 상속받아 래퍼 역할을 수행하며, 기능을 추가하거나 수정할 수 있습니다. ConcreteDecoratorA와 ConcreteDecoratorB는 실제로 기능을 추가하는 구체적인 데코레이터 클래스입니다.
사용 예시:
let component = ConcreteComponent()
let decoratedComponentA = ConcreteDecoratorA(component: component)
let decoratedComponentB = ConcreteDecoratorB(component: decoratedComponentA)
print(decoratedComponentB.operation())
위의 예시에서는 ConcreteComponent 인스턴스를 생성하고, ConcreteDecoratorA와 ConcreteDecoratorB로 데코레이터를 추가하여 기능을 런타임에 동적으로 확장합니다. operation() 메서드를 호출하여 결과를 출력합니다.
728x90
반응형
'Swift' 카테고리의 다른 글
Swift에서 컴포지트 패턴(Composite Pattern)의 개념과 예제 (0) | 2023.06.15 |
---|---|
Swift에서 프록시 패턴(Proxy Pattern)의 개념과 예제 (0) | 2023.06.15 |
Swift에서 옵저버 패턴(Observer Pattern)의 개념과 예제 (0) | 2023.06.15 |
Swift에서 전략 패턴(Strategy Pattern)의 개념과 예제 (0) | 2023.06.15 |
Swift에서 이터레이터 패턴(Iterator Pattern)의 개념과 예제 (0) | 2023.06.15 |