外观模式

scorlw 发布于

外观模式

设计模式

Facade模式也叫外观模式,是由GoF提出的23种设计模式中的一种。 Facade模式为一组具有类似功能的类群,比如类库,子系统等等,提供一个一致的简单的界面。这个一致的简单的界面被称作 facade。

image-20201015224743856

Facade

为调用方,定义简单的调用接口。

Clients

调用者。通过 Facade接口调用提供某功能的内部类群。

Packages

功能提供者。指提供功能的类群(模块或子系统)

适用于:

为子系统中统一一套接口,让子系统更加容易使用。

代码

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
66
#include <iostream>

using namespace std;

class SubSystemA
{
public:
void doThing()
{
cout << "SubSystemA run" << endl;
}
};

class SubSystemB
{
public:
void doThing()
{
cout << "SubSystemB run" << endl;
}
};

class SubSystemC
{
public:
void doThing()
{
cout << "SubSystemC run" << endl;
}
};

//为具有相同或相似功能的子系统提供统一的操作
class Facade
{
public:
Facade()
{
sysA = new SubSystemA;
sysB = new SubSystemB;
sysC = new SubSystemC;
}
~Facade()
{
delete sysA;
delete sysB;
delete sysC;
}
void doThing()
{
sysA->doThing();
sysB->doThing();
sysC->doThing();
}
private:
SubSystemA* sysA;
SubSystemB* sysB;
SubSystemC* sysC;
};

int main()
{
Facade* f = new Facade;
f->doThing();
cout << "Hello world!" << endl;
return 0;
}

输出:

1
2
3
4
SubSystemA run
SubSystemB run
SubSystemC run
Hello world!