Abstract factory pattern

  • 1,214 views
Uploaded on

Abstract Factory Pattern …

Abstract Factory Pattern
by bboroli86

More in: Technology , Business
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,214
On Slideshare
0
From Embeds
0
Number of Embeds
2

Actions

Shares
Downloads
0
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 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, CHatchery
    IBuilding* 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, CHatchery
    IBuilding* 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 5
    Prototype Pattern
    Chapter 6
    Singleton Pattern
    Chapter 7
    관련 패턴
  • 21. Abstract Factory Pattern( 제품군별 객체 생성 )
    Q & A
  • 22. Abstract Factory Pattern( 제품군별 객체 생성 )
  • 23. Abstract Factory Pattern( 제품군별 객체 생성 )
    http://yardbirds.tistory.com/tag/abstract%20factory
    http://arnakiel.textcube.com/10
    Google
    Head First Design Patterns
    GoF Design Patterns
    GoF디자인 패턴! 이렇게 활용한다
    참고자료