外观模式(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
阅读全文
0 0
- 外观模式(facade)c++版本
- Facade模式(外观模式)
- 外观模式(Facade)
- 外观模式(Facade Pattern)
- 外观(Facade)模式
- 外观模式(Facade Pattern)
- Facade(外观)模式
- Facade外观模式
- facade(外观模式)
- Facade 外观模式
- 外观模式(Facade)
- Facade外观模式
- Facade外观模式
- 外观模式Facade
- 外观模式(Facade)
- Facade(外观)模式
- Facade外观模式
- 外观模式(Facade)
- android设置启动splash图片(消除启动白屏)不使用Appcompat主题设置的方法
- Crazepony的理念
- tornado-option模块分析
- java开发微信将消息转发到多客服
- Weird Rounding
- 外观模式(facade)c++版本
- java 后台的学习步骤
- 微信用户提现不能到账,显示NO_AUTH | 产品权限验证失败,请查看您当前是否具有该产品的权限
- 集群部署spark
- 各种获取设备唯一标识的方法介绍
- 统计访问数量
- falcon 监控 windows tcp连接异常断开
- 1132: 数字字符统计
- mongodb 最佳实践