设计模式C++实现——外观模式

来源:互联网 发布:矩阵相乘值的性质 编辑:程序博客网 时间:2024/05/19 13:14

模式定义:

外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用。

模式结构:

举例:

构造一个家庭影院,当启动watchMovie方法时可以看电影,当使用endMovie时关闭电影。

编程实现及执行结果:

#include <iostream>using namespace std;//组件类class Amplifier{public:void on(){cout << "Amplifier on" << endl;}void off(){cout << "Amplifier off" << endl;}};class Tuner{public:void on(){cout << "Tuner on" << endl;}void off(){cout << "Tuner off" << endl;}};class DvdPlayer{public:void on(){cout << "DvdPlayer on" << endl;}void off(){cout << "DvdPlayer off" << endl;}};class Screen{public:void on(){cout << "Screen on" << endl;}void off(){cout << "Screen off" << endl;}};//家庭影院class HomeTheaterFacade{public://统一接口void watchMovie(){amp.on();tuner.on();dvd.on();screen.on();}void endMovie(){amp.off();tuner.off();dvd.off();screen.off();}HomeTheaterFacade(Amplifier am,Tuner tune,DvdPlayer dv,Screen scree){amp = am;tuner = tune;dvd = dv;screen = scree;}//~HomeTheaterFacade(){}private:Amplifier amp;Tuner tuner;DvdPlayer dvd;Screen screen;};//客户代码int main(){Amplifier amp;Tuner tuner;DvdPlayer dvd;Screen screen;HomeTheaterFacade homeTheaterFacade(amp,tuner,dvd,screen);;homeTheaterFacade.watchMovie();homeTheaterFacade.endMovie();return 0;}


执行结果:

Amplifieron

Tuneron

DvdPlayeron

Screenon

Amplifieroff

Tuneroff

DvdPlayeroff

Screenoff

请按任意键继续. . .

设计原则:

最少知识原则:只和你的密友谈话

0 0
原创粉丝点击