[Design Pattern] 생성 패턴 - 추상 팩토리 패턴 (Abstract Factory Pattern)
디자인 패턴 : 생성자 패턴 중 하나인 프로토타입 패턴에 대해 알아보자.
추상 팩토리 패턴
- 이름만 봐서는 팩토리 메서드 패턴과 비슷
- But, 명확한 차이점 존재
팩토리 메서드 패턴
- 조건에 따른 객체 생성의 책임을 팩토리 클래스로 위임
- 팩토리 클래스에서 객체를 생성
추상 팩토리 패턴
- 출처 : [Design Pattern] 추상 팩토리 패턴이란
- 구체적인 클래스에 의존하지 않고 서로 연관되거나 의존적인 객체들의 조합을 만드는 인터페이스를 제공하는 패턴
- 서로 관련이 있는 객체들을 통째로 묶어서 팩토리 클래스로 만듦
- 관련성 있는 여러 종류의 객체를 일관된 방식으로 생성하는 경우에 유용
- 팩토리를 조건에 따라 생성하는 팩토리로 다시 감싸놓음 (팩토리를 만드는 팩토리)
- 팩토리 메서드 패턴을 좀 더 캡슐화한 방식
- ex) 컴퓨터
- 제조사 : 삼성, LG, …
- 컴퓨터 부품 : 마우스, 키보드, 모니터, …
- 마우스, 키보드는 삼성 제품인데, 모니터는 LG 제품으로 만들면 안 됨.
- 즉, 컴퓨터는 동일 제조사의 구성품으로 생산되어야 함.
- 그렇게 때문에
SamsungComputerFactory
는삼성
의 구성품을,LgComputerFactory
는LG
의 구성품을 생산하여야 한다. - 그럼과 동시에
ComputerFactory
는SamsungComputerFactory
orLGComputerFactory
를 생성한다. 정리하면, 연관된 객체를 생성하는 Factory 가 존재함. 근데 그 Factory 도 Factory 에 의해 생성됨.
고찰
언제 쓰면 좋을까?
- 핵심은 연관된 객체의 집합. 그치만 그 집합의 종류가 여러개인 경우 사용인것 같다.
- 예를들어, 얼굴이 있으면 눈, 코, 입과 같은 부품이 있고. 얼굴은 또 서양인, 동양인, 흑인 등으로 나뉘니깐 이런 경우 사용하면 좋을 듯?
- 근데 이건 너무 일상적인 예시고 실무에서 사용을 하게 된다면??
- 부품.. 있는 도메인이 뭐가 있을까??
- 솔직히 실무에 적용하려면 아무 도메인에서나 사용은 못할 것 같고 운이 좋아야 적용 가능할 것 같다.
댓글남기기