디자인 패턴

Abstract Factory 패턴

가든_ 2022. 9. 12. 01:11

팩토리 패턴과 추상 팩토리 패턴


추상 팩토리 패턴(Abstract Factory Pattern)

상세화된 서브클래스를 정의하지 않고 서로 관련성이 있거나 독립적인 여러 객체의 군을 생성하기 위한 인터페이스를 제공하는 패턴

팩토리 메서드 패턴을 좀 더 캡슐화한 방식


추상 팩토리 패턴의 사용 이유

객체가 생성되거나 구성/표현되는 방식과 무관하게 시스템을 독립적으로 만들고자 할 때 사용한다.

여러 제품군 중 하나를 선택해서 시스템을 설정해야하고, 한번 구성한 제품을 다른 것으로 대체하는것이 가능할 때 사용한다.

관련된 제품 객체들이 함께 사용되도록 설계되었고, 이 부분에 대한 제약이 외부에서도 지켜지게 하고 싶을때 사용한다.

제품에 대한 클래스 라이브러리를 제공하고, 이것의 구현이 아닌 인터페이스만을 노출시키고 싶을 때 사용한다.


장점

  1. 구체적인 클래스를 사용자로부터 분리한다. (사용자는 인터페이스에 대해서만 알고있으면 됨)
  2. 제품군을 쉽게 대체할 수 있다.
  3. 객체 생성 과정에서 일관성이 높아진다.

단점

  1. 새로운 종류의 제품을 제공하기 어렵다.

구현방식

 Abstract Factory : 팩토리 인터페이스로, 만들고자 하는 객체를 생성하는 연산을 정의한다.

 Concrete Factory : Abstract Factory 인터페이스를 구현하는 클래스로 구체적인 요소가 들어있다.

 Abstract Product : Abstract Product에서 만들려고 했던 그 객체에 대한 인터페이스를 정의한다.

 Concrete Product : 팩토리에서 생성할 실제 객체를 정의하고 Abstract Product의 인터페이스를 정의한다.

 Client : 생성된 객체를 인터페이스만을 이용해 사용한다.(Abstract Factory와 Abstract Product만을 사용함)


참고 사이트

[생성 패턴] 추상 팩토리 패턴(Abstract Factory Pattern) 이해 및 예제