[swift] 추상 팩토리 패턴
개요
추상 팩토리 패턴은 객체 생성을 추상화하여 클라이언트가 인터페이스를 통해 연관된 객체들을 생성할 수 있게 하는 디자인 패턴입니다. 이 패턴은 클라이언트에서 구체적인 클래스를 명시적으로 지정하지 않고 객체를 생성할 수 있게 해줍니다.
예제 코드
protocol AbstractProductA {
func operationA()
}
protocol AbstractProductB {
func operationB()
}
protocol AbstractFactory {
func createProductA() -> AbstractProductA
func createProductB() -> AbstractProductB
}
class ConcreteProductA1: AbstractProductA {
func operationA() {
// 구체적인 동작 구현
}
}
class ConcreteProductB1: AbstractProductB {
func operationB() {
// 구체적인 동작 구현
}
}
class ConcreteProductA2: AbstractProductA {
func operationA() {
// 구체적인 동작 구현
}
}
class ConcreteProductB2: AbstractProductB {
func operationB() {
// 구체적인 동작 구현
}
}
class ConcreteFactory1: AbstractFactory {
func createProductA() -> AbstractProductA {
return ConcreteProductA1()
}
func createProductB() -> AbstractProductB {
return ConcreteProductB1()
}
}
class ConcreteFactory2: AbstractFactory {
func createProductA() -> AbstractProductA {
return ConcreteProductA2()
}
func createProductB() -> AbstractProductB {
return ConcreteProductB2()
}
}
사용 예시
위 예제 코드에서 AbstractProductA
, AbstractProductB
, AbstractFactory
는 추상 팩토리 패턴의 핵심 요소를 나타냅니다. 실제로 사용할 때는 클라이언트가 구체적인 팩토리를 선택하여 해당 팩토리를 통해 객체를 생성합니다.
let factory1: AbstractFactory = ConcreteFactory1()
let productA1 = factory1.createProductA()
let productB1 = factory1.createProductB()
let factory2: AbstractFactory = ConcreteFactory2()
let productA2 = factory2.createProductA()
let productB2 = factory2.createProductB()
결론
추상 팩토리 패턴은 객체 생성을 추상화하여 유연성을 확보하고, 클라이언트 코드와 구체적인 클래스들 간의 결합도를 낮추는데 활용됩니다. 오랜 시간 동안 안정적으로 사용되어 온 디자인 패턴 중 하나입니다.
참고: The Swift Programming Language: Protocols