ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 팩토리 메소드 패턴..(개인적 정리..ebook)
    @ 16. 1 ~ 17. 1/C++ 2014. 9. 1. 23:08

    프로그래밍하다 보면 같은 방법으로 사용할 수 있는 여러종류의 개체를 일반화하여 기반 클래스를 정의하고 이를 기반으로 파생클래스로 정의하는 것은 매우 흔하다.

     

    이경우에 사용하는 곳에서 구체적으로 어떠한 개체를 생성해서 사용할지에 대하여 개발 초기단께에서 결정할 수 없다면 어떻게 하면 좋을까?

    (그러니까 mmorpg를 예로..처음시작이 렙 1 뼉다귀로 시작하잖냐..?그래서 옷입히고 ..무기얻고..첨부터 무기있고 옷있는걸 어떻게 생각해?)

    이 해결책은 바로 팩토리 메서드 패턴을 이용하는 것이다.

     

    추상 팩토리 클래스에서는 사용할 개체(추상 클래스)를 생성하는 것에 대해 약속만 합니다. 대신 파생 팩토리 클래스에서 구체적으로 어떠한 개체를 생성할 것인지 구현합니다.

    (이전의 dayfactory에서 약속은 하는데..구체적 개체 생성은 evdayfactory나 hodayfactory에서 한것처럼..)

    이처럼 구체적인 개체를 생성하는 부분을 분리하면 추상 팩토리 클래스에서는 어떠한 개체를 생성할 것인지에 대한 고민은 뒤로 미루고 개체를 사용하는 부분을 구현할 수 있습니다.

    팩토리 메서드란 추상 팩토리 클래스에 약속된 개체를 생성하는 메서드입니다.(ecdayfactory? hodayfactory?)

     

    팩토리 메서드(MyApp) 패턴은 자주 사용하게 되는 프로그램의 뼈대를 만들 때 사용되기도 합니다.

    예를 들어 프로그램의 주요 뼈대로 응용클래스(EHApp)와 사용자와 상호작용하는 뷰 클래스(EHView)를 기본적으로 제공한다고 가정합니다.

    (이때 추상 응용클래스에는 추상 뷰 개체를 생성하는 메서드를 약속합니다. 추상 응용 클래스의 초기화에서는 추상 뷰개체를 생성하는 메서드를 이용하여 개체를 생성합니다.)

    (그리고 다른 메서드에서는 해당 뷰 개체를 사용합니다.)

     

    이처럼 뼈대를 구성하면 실제 프로그램을 작성할 때에는 추상 응용클래스(EHApp)에서 파생된 응용 클래스(MyApp)에서 자신에 맞는 뷰 개체를 생성하는 메서드를 구현하는 것으로 기본적인 코드는 완성되게 된다.

     

    아래의 소스 중

    뼈대는 추상 응용 클래스(EHApp)와 추상 뷰 클래스(EHView)로 구성되었다.

    추상 응용클래스에는 초기화, 런, 해제화로 진행하게 했고, 뷰 개체를 생성하는 메서드를 약속했다(초기화에서 뷰 개체를 생성하는 메서드를 호출하게 했다.)

    런에서는 사용자가 선택한 메뉴에 따라 수행하고..해제는 뷰 개체를 소멸..

     

    이렇게 만들면..특적 응용 프로그램(MyApp)을 만들때 목적에 맞는 뷰 개체(MyView)를 만들고 응용클래스의 필요한 부분만 재정의하면..쉽게 된다..

    (음..기본 베이스를 만드는것인데..)

     

    EHApp *app로..뷰도 컨트롤하고..쉽게 구현되고..어떤가? 이것을 ! 말한다.

    '@ 16. 1 ~ 17. 1 > C++' 카테고리의 다른 글

    함수 포인터 배열  (0) 2014.10.27
    원형패턴..(개인적 정리 ebook!)  (0) 2014.09.02
    추상 팩토리 패턴...(개인적정리 ebook 참고)  (0) 2014.09.01
    srand() ..  (0) 2014.07.05
    참조형 관련  (1) 2014.06.30
Designed by Tistory.