(C++ : Design-pattern) Template Example(Application Framework)

Posted by : at

Category : Cpp   Design-pattern


Application은 동작이 유사하기에 Framework를 어떤식으로 구현할지 고려해보자.

// Application Framework 제작자는 아래 코드를 제공해준다.
#include <iostream>
using namespace std;

class CWinApp;      // 클래스 전방 선언.

CWinApp* g_app = 0;

class CWinApp
{
public;
    CWinApp() { g_app = this; }
    virtual bool InitInstance() { return false; }
    virtual int ExitInstance() { return false; }
    virtual int Run() { return 0; }
};

int main()
{
    if( g_app->InitInstance() == true )
        g_app->Run();
    g_app->ExitInstance();
}
// App을 구현하는 사람은 아래를 구현한다.
class MyApp : public CWinApp
{
public:
    virtual bool InitInstance()
    {
        cout << "inittialization" << endl;
        return true;
    }
};

// 아래를 선언하면 정상적으로 App이 동작한다
MyApp theApp;

Main을 부른건도 아니고 MyApp theApp;를 생성만 했을뿐인데 App이 실행이 되다니??

  1. main이 호출되기 전 전역변수가 먼저 호출
  2. 전역변수의 생성자를 호출하고 생성자가 없다면 기반클래스의 생성자가 호출됨
  3. main함수가 호출됨.

위 구조가 마치 Template Pattern 같지 않은가? -> 맞음


About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links