设计模式-外观模式

来源:互联网 发布:场外期权交易 知乎 编辑:程序博客网 时间:2024/05/16 06:06

外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这一接口使得这一子系统更加容易使用。

使用:首先,在设计初期,应有意识的将两个不同的层分离,在层与层之间建立外观Facade。

            其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加一个外观Facade可以提供一个简单的接口,减少他们之间的依赖。

            第三,在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,这时可以为新的系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂工作。



示例代码如下:

#include <iostream.h>class Stock1{public:void Sell(){cout<<"股票一卖出"<<endl;}void Buy(){cout<<"股票一买入"<<endl;}};class Stock2{public:void Sell(){cout<<"股票二卖出"<<endl;}void Buy(){cout<<"股票二买入"<<endl;}};class Stock3{public:void Sell(){cout<<"股票三卖出"<<endl;}void Buy(){cout<<"股票三买入"<<endl;}};class Stock4{public:void Sell(){cout<<"股票四卖出"<<endl;}void Buy(){cout<<"股票四买入"<<endl;}};class Fund{private:Stock1 m_stock1;Stock2 m_stock2;Stock3 m_stock3;Stock4 m_stock4;public:void SellFund(){m_stock1.Sell();m_stock2.Sell();m_stock3.Sell();m_stock4.Sell();}void BuyFund(){m_stock1.Buy();m_stock2.Buy();m_stock3.Buy();m_stock4.Buy();}};void main(){Fund fund;fund.BuyFund();fund.SellFund();}