14. 하위 클래스에서 객체를 생성하는데, 상위 클래스
에서는 그 객체에 대해 몰라도 된다는 것!!
15. 피자 가게
뉴욕 피자 가게, 판교 피자 가게, 진월동 피자 가게
같은 피자 가게이지만, 생산하는 메뉴가 제 각각!!
16. Class 피자 가게
Pizza* PizzaFactory( pizzaType tye)
Class 뉴욕 피자 가게
Pizza* PizzaFactory( pizzaType tye)
Class 판교 피자 가게
Pizza* PizzaFactory( pizzaType tye)
Class 진월동 피자 가게
Pizza* PizzaFactory( pizzaType tye)
17. 피자 가게
?? 피자 생산
뉴욕 피자 가게
뉴욕 스타일 페페로니 피자
판교 피자 가게
야식 피자
진월동 피자 가게
우리 쌀 피자
19. 의존성에서 개이득!!
하위 클래스에서 객체 생성 함수를 구현 하여, 상
위 클래스와 실제 생성되는 객체와의 의존성은 제
거함!!
20. 좀 더 의존성을 줄이는 방법이 있지만 그것은 나중
에… ( 힌트는 피자를 추상 클래스로 하나 만들고
하위 클래스로 구체화 시키면됨.. )
21. 정리
하위 클래스에서 객체를 생성하는데, 상위 클래스에
서는 그 객체에 대해 몰라도 된다는 것!!
( 제일 처음 것 복붙.. 이제 이해 되셔야 됨..)
22. 객체가 객체를 생성함!!
다양한 구성 요소 별로 “객체의 집합”을 생성 해야
할 때 유용!!
23. 피자 원료 공장
CreateDough()
CreateSauce()
뉴욕 피자 원료 공장
CreateDough()
CreateSauce()
판교 피자 원료 공장
CreateDough()
CreateSauce()
진월동 피자 원료 공장
CreateDough()
CreateSauce()
24. 각각의 하위 원료 공장에서 Dough와 Sauce를 생
성하게 만듦.
( 뉴욕, 판교, 진월동이 각각의 재료를 생성하고 이
것이 한 묶음이 됨)
25. 탬플릿 메소드 패턴을 사용했다는 점에서는 같다!
하지만, 팩토리 메소드 패턴은 클래스를 이용하여
객체를 만들고, 추상 팩토리 패턴은 객체 구성을
통해 객체를 만든다.
26. 팩토리 메소드 패턴
pizza* PizzaFactory( pizzaType type )
{
switch(type)
{
case 진월:
return 진월피자;
….
}
}
=> 타입을 통해 객체 하나를 만듦.
27. Class 진월원료공장
{
CreateDough();
CreateSauce();
…..
}
=> 먼저 객체를 생성하고 해당 객체로 각각의 원료
를 생산하여, 자신을 점점 구체화 시킴.
28. 탬플릿 메소드 패턴을 사용했다는 점에서는 같다!
하지만, 팩토리 메소드 패턴은 클래스를 이용하여
객체를 한번에 만들고, 추상 팩토리 패턴 객체를
생성하고, 객체 구성을 통해 자신을 점점 구체화(?)
시킨다.