본문 바로가기
Swift

Swift에서 팩토리 메서드 패턴(Factory Method Pattern)의 개념과 예제

by mr.conan 2023. 6. 15.
728x90
반응형

팩토리 메서드 패턴(Factory Method Pattern)은 소프트웨어 개발에서 널리 사용되는 디자인 패턴 중 하나입니다. Swift에서도 팩토리 메서드 패턴을 활용하여 객체 생성을 추상화하고 유연한 코드 구조를 구현할 수 있습니다. 이 블로그 포스트에서는 팩토리 메서드 패턴의 개념을 설명하고, Swift로 구현된 예제를 통해 팩토리 메서드 패턴의 사용법을 알아보겠습니다.

 

팩토리 메서드 패턴의 개념:

팩토리 메서드 패턴은 객체 생성을 처리하는 인터페이스를 정의하고, 이를 하위 클래스에서 구체적인 객체 생성에 활용하는 패턴입니다. 즉, 객체를 생성하기 위한 추상화된 팩토리 메서드를 정의하고, 실제 객체 생성은 하위 클래스에서 처리합니다. 이를 통해 객체 생성의 유연성과 확장성을 높일 수 있습니다.

 

팩토리 메서드 패턴 예제:

protocol Product {
    func use()
}

class ConcreteProductA: Product {
    func use() {
        print("Using Concrete Product A")
    }
}

class ConcreteProductB: Product {
    func use() {
        print("Using Concrete Product B")
    }
}

protocol Creator {
    func createProduct() -> Product
}

class ConcreteCreatorA: Creator {
    func createProduct() -> Product {
        return ConcreteProductA()
    }
}

class ConcreteCreatorB: Creator {
    func createProduct() -> Product {
        return ConcreteProductB()
    }
}

위의 예제에서는 Product 프로토콜을 정의하고, ConcreteProductA ConcreteProductB 클래스가 이를 구현합니다. 또한, Creator 프로토콜을 정의하고, ConcreteCreatorA ConcreteCreatorB 클래스가 이를 채택하며, createProduct() 메서드를 구현합니다.

 

사용예시:

let creatorA: Creator = ConcreteCreatorA()
let productA = creatorA.createProduct()
productA.use()

let creatorB: Creator = ConcreteCreatorB()
let productB = creatorB.createProduct()
productB.use()

위의 예시에서는 Creator 프로토콜을 활용하여 ConcreteCreatorA ConcreteCreatorB 생성합니다. 그리고 createProduct() 메서드를 호출하여 각각의 팩토리에서 원하는 제품을 생성하고, use() 메서드를 호출하여 제품을 사용합니다.

728x90
반응형