티스토리 뷰

반응형

Abstract Factory Pattern - 디자인 패턴

참고서적 :  Head First Design Pattern
소스코드 다운로드 : http://www.wickedlysmart.com/headfirstdesignpatterns/code.html
 
패턴 정의 #5 - Abstract Factory Pattern

추상 팩토리 패턴에서는 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성할 수 있습니다.
 
디자인 원칙

1. 추상화된 것에 의존하도록 만들어라. 구상 클래스에 의존하도록 만들지 않도록 한다.
 
추상 팩토리 패턴을 사용하면 클라이언트에서 추상 인터페이스를 통해서 일련의 제품들을 공급받을 수 있습니다.
이때, 실제로 어떤 제품이 생산되는지는 전혀 알 필요도 없습니다.
따라서 클라이언트와 팩토리에서 생산되는 제품을 분리시킬 수 있습니다.
 


- 클라이언트를 만들 때는 추상 팩토리를 바탕으로 만듭니다. 실제 팩토리는 실행시에 결정됩니다.
- AbstractFactory는 모든 구상 팩토리에서 구현해야 하는 인터페이스입니다. 제품을 생산하기 위한 일련의 메소드들이 정의되어 있습니다.
- 구상 팩토리에서는 서로 다른 제품군을 구현합니다.
클라이언트에서 제품이 필요하면 이 팩토리 가운데 적당한 걸 골라서 쓰면 되기 때문에 제품 객체의 인스턴스를 직접 만들 필요가 없죠.
- 각 구상 팩토리에서 필요한 제품들을 모두 만들 수 있습니다.
 
실제 PizzaStore에서 사용된 그림은 다음과 같습니다.
 
여기에서 클라이언트는 NYPizzaStore와 같은 것이 되겠죠...
그리고 NYPizzaStore의 팩토리 메소드로 사용된 createPizza() 함수 내에 재료를 나타내는 PizzaIngredientFactory에 대한 인스턴스를 포함하고 있게 됩니다.

 
반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함