활용성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;}
Abstract Factory Pattern(제품군별 객체 생성 )장점객체가 생성되는 방식, 과정 및 책임을 클라이언트가 모르도록 만들어 준다.Concreate Factory 클래스의 객체가 생성되는 부분만 변경시켜주면얼마든지 다른 제품군( Product Family )을 생성하도록 바꿀 수 있다.3. 여러 제품들이 실수로 섞여서 사용되는 것이 자연스럽게 방지된다.
19.
Abstract Factory Pattern(제품군별 객체 생성 )단점제품군( Product Family )의 개수가 늘어날수록 Concreate Factory 클래스의개수도 늘어나서, 설계가 복잡해질 수 있다.2. 새로운 제품이 추가될 경우, 모든 Factory 클래스를 수정해야 한다.모든 제품군에서필요한 제품이 추가된 경우라면불가피한 수정이지 않을까?자주 제품의 교체가 이루어져, 단점이 계속 발생된다면Abstract Factory Pattern 적용은 적절한 선택이 아닌 듯.
Abstract Factory Pattern(제품군별 객체 생성 )http://yardbirds.tistory.com/tag/abstract%20factoryhttp://arnakiel.textcube.com/10GoogleHead First Design PatternsGoF Design PatternsGoF디자인 패턴! 이렇게 활용한다참고자료