模式定义:
外观模式提供了一个统一的接口,用来訪问子系统中的一群接口。外观定义了一个高层接口,让子系统更easy使用。
模式结构:
举例:
构造一个家庭影院。当启动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
请按随意键继续. . .
设计原则:
最少知识原则:仅仅和你的密友谈话