外观模式(facade)c++版本

来源:互联网 发布:国家基础地理数据 编辑:程序博客网 时间:2024/06/02 03:26

大话设计模式中的外观模式c++版本

/* * facade.cpp * *  Created on: Jul 25, 2017 *      Author: clh01s@163.com *      外观模式 *      为子系统中的一组接口提供一个一致的界面, *      此模式定义了一个高层接口,这个接口使得这 *      一个子系统更加容易使用. */#include <iostream>using namespace std;//股票类class Stock1{public:    void sell()    {        cout<<"股票1卖出!!!"<<endl;    }    void  buy()    {        cout<<"股票1买入!!!"<<endl;    }};class Stock2{public:    void sell()    {        cout<<"股票2卖出!!!"<<endl;    }    void  buy()    {        cout<<"股票2买入!!!"<<endl;    }};class Stock3{public:    void sell()    {        cout<<"股票3卖出!!!"<<endl;    }    void  buy()    {        cout<<"股票3买入!!!"<<endl;    }};class Stock4{public:    void sell()    {        cout<<"股票4卖出!!!"<<endl;    }    void  buy()    {        cout<<"股票4买入!!!"<<endl;    }};class Stock5{public:    void sell()    {        cout<<"股票5卖出!!!"<<endl;    }    void  buy()    {        cout<<"股票5买入!!!"<<endl;    }};class Stock6{public:    void sell()    {        cout<<"股票6卖出!!!"<<endl;    }    void  buy()    {        cout<<"股票6买入!!!"<<endl;    }};//统筹操作类(类似基金)class Fund{public:    //在构造函数初始化股票类指针    Fund()    {        _gu1 = new Stock1();        _gu2 = new Stock2();        _gu3 = new Stock3();        _gu4 = new Stock4();        _gu5 = new Stock5();        _gu6 = new Stock6();    }    void buy()    {        _gu1->buy();        _gu2->buy();        _gu3->buy();        _gu4->buy();        _gu5->buy();        _gu6->buy();    }    void sell()    {        _gu1->sell();        _gu2->sell();        _gu3->sell();        _gu4->sell();        _gu5->sell();        _gu6->sell();    }private:    //各个股票类的指针变量用于统一操作股票    Stock1 *_gu1 = NULL;    Stock2 *_gu2 = NULL;    Stock3 *_gu3 = NULL;    Stock4 *_gu4 = NULL;    Stock5 *_gu5 = NULL;    Stock6 *_gu6 = NULL;};int main(){    //用户可以对fund函数一无所知,直接调用相关函数即可,所有的操作都有fund的函数代理完成    Fund fd;    fd.buy();    fd.sell();    return 0;}

外观模式优点(摘抄与《设计模式》):
1.它对客户屏蔽子系统组件,因而减少了客户处理的对象的数目并使得子系统使用起来更加方便
2.它实现了系统与客户的松耦合关系,而子系统内部的功能往往是紧耦合的.松耦合关系使得子系统组件的变化不会影响到它的客户.
3.如果应用需要,它并不限制他们使用子系统类.因此你可以在系统易用性和通用性之间加以选择
转载请标注源地址:http://blog.csdn.net/clh01s/article/details/76068231

原创粉丝点击