Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Abstract factory pattern

1,568 views

Published on

Abstract Factory Pattern
by bboroli86

Published in: Technology, Business
  • Be the first to comment

Abstract factory pattern

  1. 1. Abstract Factory Pattern( 제품군별 객체 생성 )<br />2010. 06. 03. 석민우<br />
  2. 2. Abstract Factory Pattern( 제품군별 객체 생성 )<br />같은 제품군( Product Family )에<br />속한 제품들만 생성 및 사용하도록 보장하라! 보장하라!<br />?<br />
  3. 3. Abstract Factory Pattern( 제품군별 객체 생성 )<br />상세화된 서브클래스를 정의하지 않고도<br />서로 관련성이 있거나 독립적인 여러 객체의 군을<br />생성하기 위한 인터페이스를 제공합니다.<br />
  4. 4. Abstract Factory Pattern( 제품군별 객체 생성 )<br />상세화된 서브클래스를 정의하지 않고도<br />서로 관련성이 있거나 독립적인 여러 객체의 군을<br />생성하기 위한 인터페이스를 제공합니다.<br />개념적! 객체를 생성하는<br />인터페이스 제공<br />
  5. 5. Abstract Factory Pattern( 제품군별 객체 생성 )<br />상세화된 서브클래스를 정의하지 않고도<br />서로 관련성이 있거나 독립적인 여러 객체의 군을<br />생성하기 위한 인터페이스를 제공합니다.<br />구체적인! 제품 객체 생성<br />
  6. 6. Abstract Factory Pattern( 제품군별 객체 생성 )<br />상세화된 서브클래스를 정의하지 않고도<br />서로 관련성이 있거나 독립적인 여러 객체의 군을<br />생성하기 위한 인터페이스를 제공합니다.<br />개념적! 제품 객체의 인터페이스 제공<br />
  7. 7. Abstract Factory Pattern( 제품군별 객체 생성 )<br />상세화된 서브클래스를 정의하지 않고도<br />서로 관련성이 있거나 독립적인 여러 객체의 군을<br />생성하기 위한 인터페이스를 제공합니다.<br />ConcreateFactory가 생성할 객체<br />
  8. 8. Abstract Factory Pattern( 제품군별 객체 생성 )<br />상세화된 서브클래스를 정의하지 않고도<br />서로 관련성이 있거나 독립적인 여러 객체의 군을<br />생성하기 위한 인터페이스를 제공합니다.<br />AbstractFactory및<br />AbstractProduct<br />인터페이스 사용<br />
  9. 9. Abstract Factory Pattern( 제품군별 객체 생성 )<br />상세화된 서브클래스를 정의하지 않고도<br />서로 관련성이 있거나 독립적인 여러 객체의 군을<br />생성하기 위한 인터페이스를 제공합니다.<br />
  10. 10. Abstract Factory Pattern( 제품군별 객체 생성 )<br />에??<br />
  11. 11. Abstract Factory Pattern( 제품군별 객체 생성 )<br />
  12. 12. 활용성<br />Abstract Factory Pattern( 제품군별 객체 생성 )<br />객체의 생성, 구성, 표현되는 방식과<br />무관한 독립적인 시스템을 만들고자 할 때<br />여러 제품군( Product Family ) 중<br />하나를 선택하여 시스템을 설정.<br />제품군에 속한 제품들이 함께 사용되도록 설계~<br />이것에 대한 제약이 외부에도 지켜지도록!<br />제품에 대한 클래스 라이브러리를 제공하지만<br />구현이 아닌 인터페이스를 노출시키고 싶을 때<br />
  13. 13. 활용성<br />Abstract Factory Pattern( 제품군별 객체 생성 )<br />객체의 생성, 구성, 표현되는 방식과<br />무관한 독립적인 시스템을 만들고자 할 때<br />int _tmain()<br />{<br />IBuilding* pUnitFactory = new 무언가생성();<br />CUnit* pUnit1 = pUnitFactory->CreateUnit1();<br /> pUnit1->MoveStopAttackMan();<br />CUnit* pUnit2 = pUnitFactory->CreateUnit2();<br /> pUnit2->MoveStopAttackMan();<br />CUnit* pUnit3 = pUnitFactory->CreateUnit3();<br /> pUnit3->MoveStopAttackMan();<br />CUnit* pUnit4 = pUnitFactory->CreateUnit4();<br /> pUnit4->MoveStopAttackMan();<br /> return 0;<br />}<br />
  14. 14. 활용성<br />Abstract Factory Pattern( 제품군별 객체 생성 )<br />여러 제품군( Product Family ) 중<br />하나를 선택하여 시스템을 설정.<br />int _tmain()<br />{<br />// Cfactory, Cbarrack, CHatchery<br />IBuilding* pUnitFactory = new Factory? Barrack? Hatchery?;<br />CUnit* pUnit1 = pUnitFactory->CreateUnit1();<br /> pUnit1->MoveStopAttackMan();<br />CUnit* pUnit2 = pUnitFactory->CreateUnit2();<br /> pUnit2->MoveStopAttackMan();<br /> return 0;<br />}<br />
  15. 15. 활용성<br />Abstract Factory Pattern( 제품군별 객체 생성 )<br />제품군에 속한 제품들이 함께 사용되도록 설계~<br />이것에 대한 제약이 외부에도 지켜지도록!<br />Class Cfactory : public Ibuilding<br />{<br />Cunit* CreateUnit1(){ return new CSiegeTank(); }<br />Cunit* CreateUnit2(){ return new CGirlsGeneration(); }<br />};<br />int _tmain()<br />{<br />// Cfactory, Cbarrack, CHatchery<br />IBuilding* pUnitFactory = new Factory? Barrack? Hatchery?;<br />CUnit* pUnit1 = pUnitFactory->CreateUnit1();<br /> pUnit1->MoveStopAttackMan();<br />CUnit* pUnit2 = pUnitFactory->CreateUnit1();<br /> pUnit2->MoveStopAttackMan();<br /> return 0;<br />}<br />
  16. 16. 활용성<br />Abstract Factory Pattern( 제품군별 객체 생성 )<br />제품에 대한 클래스 라이브러리를 제공하지만<br />구현이 아닌 인터페이스를 노출시키고 싶을 때<br />
  17. 17. Abstract Factory Pattern( 제품군별 객체 생성 )<br />이제 조금 남았어요 ㅠ_ㅠ<br />
  18. 18. Abstract Factory Pattern( 제품군별 객체 생성 )<br />장점<br />객체가 생성되는 방식, 과정 및 책임을 클라이언트가 모르도록 만들어 준다.<br />Concreate Factory 클래스의 객체가 생성되는 부분만 변경시켜주면<br />얼마든지 다른 제품군( Product Family )을 생성하도록 바꿀 수 있다.<br />3. 여러 제품들이 실수로 섞여서 사용되는 것이 자연스럽게 방지된다.<br />
  19. 19. Abstract Factory Pattern( 제품군별 객체 생성 )<br />단점<br />제품군( Product Family )의 개수가 늘어날수록 Concreate Factory 클래스의<br />개수도 늘어나서, 설계가 복잡해질 수 있다.<br />2. 새로운 제품이 추가될 경우, 모든 Factory 클래스를 수정해야 한다.<br />모든 제품군에서필요한 제품이 추가된 경우라면<br />불가피한 수정이지 않을까?<br />자주 제품의 교체가 이루어져, 단점이 계속 발생된다면<br />Abstract Factory Pattern 적용은 적절한 선택이 아닌 듯.<br />
  20. 20. Abstract Factory Pattern( 제품군별 객체 생성 )<br />Factory Method Pattern<br /> Chapter 5<br />Prototype Pattern<br /> Chapter 6<br />Singleton Pattern<br /> Chapter 7<br />관련 패턴<br />
  21. 21. Abstract Factory Pattern( 제품군별 객체 생성 )<br />Q & A<br />
  22. 22. Abstract Factory Pattern( 제품군별 객체 생성 )<br />
  23. 23. Abstract Factory Pattern( 제품군별 객체 생성 )<br />http://yardbirds.tistory.com/tag/abstract%20factory<br />http://arnakiel.textcube.com/10<br />Google<br />Head First Design Patterns<br />GoF Design Patterns<br />GoF디자인 패턴! 이렇게 활용한다<br />참고자료<br />

×