-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathLinary_Facade.h
87 lines (76 loc) · 1.56 KB
/
Linary_Facade.h
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
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
/*****************************************************************/
/* 设计模式————外观模式
/* 作者:李凝瑞
/* 时间:2015.04.03
/*****************************************************************/
#pragma once
namespace linary_facade {
// 编译器
class Compiler {
public:
void Compile() {
std::cout << "1)编译源代码" << std::endl;
}
};
// 链接器
class Linker {
public:
void Link() {
std::cout << "2)链接对象文件" << std::endl;
}
};
// 控制台
class Consoler {
public:
void Print() {
std::cout << "3)打印输出" << std::endl;
}
};
// 集成开发环境,包含编译器,链接器,执行器
class IDE {
public:
// 集成开发环境的构造函数
IDE() {
compiler = new Compiler();
linker = new Linker();
consoler = new Consoler();
}
// 集成开发环境的析构函数
~IDE() {
delete consoler;
delete linker;
delete compiler;
}
// 仅编译
void Compile() {
compiler->Compile();
}
// 生成解决方案(编译 + 链接)
void GenerateSolution() {
compiler->Compile();
linker->Link();
}
// 运行(编译 + 链接 + 打印输出)
void Run() {
compiler->Compile();
linker->Link();
consoler->Print();
}
private:
Compiler * compiler;
Linker * linker;
Consoler * consoler;
};
// 测试代码
static void Test_Facade() {
std::cout << "--------------------------" << std::endl;
std::cout << "-- 外观模式测试 --" << std::endl;
std::cout << "--------------------------" << std::endl;
IDE * VS2010 = new IDE();
VS2010->Compile();
VS2010->GenerateSolution();
VS2010->Run();
delete VS2010;
std::cout << std::endl;
}
}