[架构设计]设计模式C++实现--外观模式
- 格式:docx
- 大小:198.94 KB
- 文档页数:5
模式定义:
外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观
定义了一个高层接口,让子系统更容易使用。
模式结构:
举例:
构造一个家庭影院,当启动watchMovie方法时可以看电影,当使用
endMovie时关闭电影。
编程实现及执行结果:
[cpp] view plaincopy
1. #include
2. using namespace std;
3. //组件类
4. class Amplifier
5. {
6. public:
7. void on()
8. {
9. cout << "Amplifier on" << endl;
10. }
11.
12. void off()
13. {
14. cout << "Amplifier off" << endl;
15. }
16. };
17.
18.
19. class Tuner
20. {
21. public:
22. void on()
23. {
24. cout << "Tuner on" << endl;
25. }
26.
27. void off()
28. {
29. cout << "Tuner off" << endl;
30. }
31. };
32.
33. class DvdPlayer
34. {
35. public:
36. void on()
37. {
38. cout << "DvdPlayer on" << endl;
39. }
40.
41. void off()
42. {
43. cout << "DvdPlayer off" << endl;
44. }
45. };
46.
47. class Screen
48. {
49. public:
50. void on()
51. {
52. cout << "Screen on" << endl;
53. }
54.
55. void off()
56. {
57. cout << "Screen off" << endl;
58. }
59. };
60. //家庭影院
61. class HomeTheaterFacade
62. {
63. public:
64. //统一接口
65. void watchMovie()
66. {
67. amp.on();
68. tuner.on();
69. dvd.on();
70. screen.on();
71. }
72.
73. void endMovie()
74. {
75. amp.off();
76. tuner.off();
77. dvd.off();
78. screen.off();
79. }
80.
81. HomeTheaterFacade(Amplifier am,
82. Tuner tune,
83. DvdPlayer dv,
84. Screen scree)
85. {
86. amp = am;
87. tuner = tune;
88. dvd = dv;
89. screen = scree;
90. }
91. //~HomeTheaterFacade(){}
92. private:
93. Amplifier amp;
94. Tuner tuner;
95. DvdPlayer dvd;
96. Screen screen;
97. };
98. //客户代码
99. int main()
100. {
101. Amplifier amp;
102. Tuner tuner;
103. DvdPlayer dvd;
104. Screen screen;
105.
106. HomeTheaterFacade homeTheaterFacade(amp,tuner,dvd,screen);;
107. homeTheaterFacade.watchMovie();
108. homeTheaterFacade.endMovie();
109. return 0;
110. }
执行结果:
Amplifieron
Tuneron
DvdPlayeron
Screenon
Amplifieroff
Tuneroff
DvdPlayeroff
Screenoff
请按任意键继续. . .
设计原则:
最少知识原则:只和你的密友谈话