[Design Pattern] 생성 패턴 - 추상 팩토리 패턴 (Abstract Factory Pattern)

1 분 소요

디자인 패턴 : 생성자 패턴 중 하나인 프로토타입 패턴에 대해 알아보자.

추상 팩토리 패턴

  • 이름만 봐서는 팩토리 메서드 패턴과 비슷
  • But, 명확한 차이점 존재

팩토리 메서드 패턴

  • 조건에 따른 객체 생성의 책임을 팩토리 클래스로 위임
  • 팩토리 클래스에서 객체를 생성

추상 팩토리 패턴

img
- 출처 : [Design Pattern] 추상 팩토리 패턴이란

  • 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴
    • 서로 관련이 있는 객체들을 통째로 묶어서 팩토리 클래스로 만듦
    • 관련성 있는 여러 종류의 객체를 일관된 방식으로 생성하는 경우에 유용
  • 팩토리를 조건에 따라 생성하는 팩토리로 다시 감싸놓음 (팩토리를 만드는 팩토리)
  • 팩토리 메서드 패턴을 좀 더 캡슐화한 방식
  • ex) 컴퓨터
    • 제조사 : 삼성, LG, …
    • 컴퓨터 부품 : 마우스, 키보드, 모니터, …
    • 마우스, 키보드는 삼성 제품인데, 모니터는 LG 제품으로 만들면 안 됨.
    • 즉, 컴퓨터는 동일 제조사의 구성품으로 생산되어야 함.
    • 그렇게 때문에 SamsungComputerFactory삼성의 구성품을, LgComputerFactoryLG 의 구성품을 생산하여야 한다.
    • 그럼과 동시에 ComputerFactorySamsungComputerFactory or LGComputerFactory 를 생성한다.
    • 정리하면, 연관된 객체를 생성하는 Factory 가 존재함. 근데 그 Factory 도 Factory 에 의해 생성됨.

고찰

언제 쓰면 좋을까?

  • 핵심은 연관된 객체의 집합. 그치만 그 집합의 종류가 여러개인 경우 사용인것 같다.
  • 예를들어, 얼굴이 있으면 눈, 코, 입과 같은 부품이 있고. 얼굴은 또 서양인, 동양인, 흑인 등으로 나뉘니깐 이런 경우 사용하면 좋을 듯?
  • 근데 이건 너무 일상적인 예시고 실무에서 사용을 하게 된다면??
    • 부품.. 있는 도메인이 뭐가 있을까??
    • 솔직히 실무에 적용하려면 아무 도메인에서나 사용은 못할 것 같고 운이 좋아야 적용 가능할 것 같다.

⬅️ 디자인패턴 목차보기

댓글남기기