[swift] 클래스의 추상 팩토리(Abstract Factory) 패턴 개념

추상 팩토리 패턴은 객체를 생성하는 인터페이스를 제공하는 패턴으로, 관련된 객체들을 생성하기 위한 인터페이스를 정의합니다. 이 패턴을 사용하면 일련의 관련 객체들을 생성, 사용, 그리고 교체하기가 쉬워집니다.

추상 팩토리 패턴 설명

추상 팩토리 패턴은 관련된 객체들을 생성하기 위한 추상 팩토리와 해당 추상 팩토리에 대응하는 여러 개의 구체적인 팩토리로 구성됩니다. 예를 들어, 피자 가게에서는 (1) 도우, (2) 토핑, (3) 소스 등의 관련된 객체를 생성할 수 있습니다. 각각의 관련된 객체를 생성하기 위한 여러 개의 구체적인 팩토리가 있습니다.

추상 팩토리 패턴을 사용하는 이유

추상 팩토리 패턴을 사용하는 이유는, 구체적인 클래스들을 분리시키고, 불일치를 추상화하고, 확장성을 갖추도록 설계하기 위해서입니다. 즉, 서로 관련된 객체들 사이의 의존성을 줄이고, 유연한 코드를 작성할 수 있도록 도와줍니다.

추상 팩토리 패턴의 예시

protocol Dough {
    var description: String { get }
}

class ThinCrustDough: Dough {
    var description: String { return "얇은 도우" }
}

protocol Sauce {
    var description: String { get }
}

class MarinaraSauce: Sauce {
    var description: String { return "마리나라 소스" }
}

// 팩토리 프로토콜
protocol PizzaIngredientFactory {
    func createDough() -> Dough
    func createSauce() -> Sauce
}

// 구체적인 팩토리 클래스
class NYPizzaIngredientFactory: PizzaIngredientFactory {
    func createDough() -> Dough {
        return ThinCrustDough()
    }

    func createSauce() -> Sauce {
        return MarinaraSauce()
    }
}

위의 예제를 통해 추상 팩토리 패턴을 실제 코드로 구현하는 방법을 확인할 수 있습니다.

결론

추상 팩토리 패턴은 일련의 관련된 객체들을 생성하기 위한 패턴으로, 구체적인 클래스들을 분리해서 불일치를 추상화하고, 확장성을 갖추도록 설계하는 데 도움을 줍니다.

자료 출처