您的位置:首页 > 其它

结构型模式之外观模式(Facade)

2017-05-08 11:01 253 查看
1. 意图
为子系统中的一组接口提供一个一致的界面, F a c a d e模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
2. 动机
将一个系统划分成为若干个子系统有利于降低系统的复杂性。一个常见的设计目标是使子系统间的通信和相互依赖关系达到最小。达到该目标的途径之一是就是引入一个外观(f a c a d e)对象,它为子系统中较一般的设施提供了一个单一而简单的界面。



模式结构:



3.举例

#ifndef FACADE_H
#define FACADE_H
#include <iostream>
using std::cout;
using std::endl;
class CLight{
public:
void On(){
cout<<"Turn the light on!"<<endl;
}
void Off(){
cout<<"Turn the light off!"<<endl;
}
};
class CTelevision{
public:
void On(){
cout<<"Turn the television on!"<<endl;
}
void Off(){
cout<<"Turn the television off!"<<endl;
}
};
class CAirCondition{
public:
void On(){
cout<<"Turn the aircondition on!"<<endl;
}
void Off(){
cout<<"Turn the aircondition off!"<<endl;
}
};
class CFan{
public:
void On(){
cout<<"Turn the fan on!"<<endl;
}
void Off(){
cout<<"Turn the fan off!"<<endl;
}
};
class CSwitch{
private:
CLight* pLight;
CTelevision* pTelevision;
CAirCondition* pAirCondition;
CFan* pFan;
public:
CSwitch(){
pLight=new CLight;
pTelevision=new CTelevision;
pAirCondition=new CAirCondition;
pFan=new CFan;
}
void On(){
pLight->On();
pTelevision->On();
pAirCondition->On();
pFan->On();
}
void Off(){
pLight->Off();
pTelevision->Off();
pAirCondition->Off();
pFan->Off();
}
};
#endif

#include <iostream>
#include "facade.h"
int main(){
CSwitch example;
cout<<"Turn the switch on:"<<endl;
example.On();
cout<<"Turn the switch off:"<<endl;
example.Off();
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  外观模式