设计模式学习-Facade(外观)
意图:为子系统中的一组接口提供一个一致的界面.定义一个高层接口,该接口是的这一个子系统的更加容易使用.
动机:是的子系统之间的通信和相互依赖达到最小,达到该目的的途径之一就是引入一个外观(Facade)对象,它为子系统中较为一般的设施提供了一个单一而简单的界面.
Facade作为生态子系统的统一界面用于外接交互
适用性:
为复杂子系统提供一个简单接口
Facade提供了客户与子系统以及其他子系统的分离
为各个自系统提供每层的入口点.
示例代码:
//生态子系统的Facade类作为外部接口的界面,内部子系统的复杂构建不为外界所知
class
CEcoSystem
{
public:
CEcoSystem(void);
public:
~CEcoSystem(void);
public:
void Draw()
{
//绘制树林信息
m_forest->Draw();
}
void MadeSound()
{
//树林发出声音
m_forest->MadeSound();
}
private:
//CAnimalArray m_animals;
CForest*
m_forest;
};
//外部代码
CEcoSystem sys;
sys.Draw();
sys.MadeSound();