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

Abstract factory pattern

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