Thinking Different







Facade Pattern - 파사드 패턴


  • 통일된 인터페이스를 통해 복잡한 서브시스템들을 간단히 사용하도록 만든 패턴이다.
  • 패턴이라고도 말하기 힘들정도로 간단하기 때문에 초보자들도 쉽게 이해 가능하다.







샘플 코드)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
class SubClassA
{
public:
    void operation() { cout << "SubClass A" << endl; }
};
 
class SubClassB
{
public:
    void operation() { cout << "SubClass B" << endl; }
};
 
class SubClassC
{
public:
    void operation() { cout << "SubClass C" << endl; }
};
 
class Facade
{
public:
    Facade(SubClassA *a, SubClassB *b, SubClassC* c) : mSubA(a), mSubB(b), mSubC(c) {}
 
public:
    void operation() { mSubA->operation(); mSubB->operation(); mSubC->operation(); }
 
private:
    SubClassA* mSubA;
    SubClassB* mSubB;
    SubClassC* mSubC;
};
 
//------------------------------------------------------------------
// Main
int _tmain(int argc, _TCHAR* argv[])
{
    SubClassA subA;
    SubClassB subB;
    SubClassC subC;
 
    Facade facade(&subA, &subB, &subC);
 
    facade.operation();
 
    getchar();
 
    return 0;
}





예제를 통한 파사드 패턴(Facade Pattern) 알아보기



예제) 컴퓨터 부팅 예제



컴퓨터 부팅 예제 클래스 입니다. 컴퓨터 클래스에서 각 부품들을 멤버변수로 가지고 컴퓨터를 부팅하는 과정을 출력하는 예제이다.



예제 코드)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
class BIOS
{
public:
    void operation() { cout << "\t-BIOS Loading..." << endl; }
};
 
class CPU
{
public:
    void operation() { cout << "\t-CPU Processing..." << endl; }
};
 
class MEMORY
{
public:
    void operation() { cout << "\t-Memory Loading..." << endl; }
};
 
class HDD
{
public:
    void operation() { cout << "\t-Hard Disk Loading..." << endl; }
};
 
class Computer
{
public:
    Computer(BIOS *a, CPU *b, MEMORY* c, HDD* d) : mBios(a), mCpu(b), mMemory(c), mHdd(d) {}
 
public:
    void Booting() 
    {
        cout << "+Computer Booting Start" << endl;
        
        mBios->operation();
        mCpu->operation();
        mMemory->operation();
        mHdd->operation();
 
        cout << "+Computer Booting Complete" << endl;
    }
 
private:
    BIOS* mBios;
    CPU* mCpu;
    MEMORY* mMemory;
    HDD* mHdd;
};
 
//------------------------------------------------------------------
// Main
int _tmain(int argc, _TCHAR* argv[])
{
    BIOS bios;
    CPU cpu;
    MEMORY memory;
    HDD hdd;
 
    Computer mComputer(&bios, &cpu, &memory, &hdd);
    mComputer.Booting();
 
    getchar();
 
    return 0;
}


예제 결과)