源码可以在这里找到 大话设计模式C++版

股民炒股代码

//main.cpp
#include <iostream>using namespace std;//股票1
class Stock1 {public:void Sell() {cout << "股票1卖出" << endl;}void Buy() {cout << "股票1买入" << endl;}
};
//股票2
class Stock2 {//代码类似股票1 略
};
//股票3
class Stock3 {//代码类似股票1 略
};
//国债1
class NationalDebt1 {//代码类似股票1 略
};
//房地产1
class Realty1 {//代码类似股票1 略
};int main(int argc, char *argv[])
{shared_ptr<Stock1> gu1(new Stock1());shared_ptr<Stock2> gu2(new Stock2());shared_ptr<Stock3> gu3(new Stock3());shared_ptr<NationalDebt1> nd1(new NationalDebt1());shared_ptr<Realty1> rt1(new Realty1());gu1->Buy();gu2->Buy();gu3->Buy();nd1->Buy();rt1->Buy();gu1->Sell();gu2->Sell();gu3->Sell();nd1->Sell();rt1->Sell();return 0;
}

投资基金代码

//新增Fund基金类
class Fund {private:shared_ptr<Stock1> gu1;shared_ptr<Stock2> gu2;shared_ptr<Stock3> gu3;shared_ptr<NationalDebt1> nd1;shared_ptr<Realty1> rt1;
public:Fund() {gu1 = shared_ptr<Stock1>(new Stock1());gu2 = shared_ptr<Stock2>(new Stock2());gu3 = shared_ptr<Stock3>(new Stock3());nd1 = shared_ptr<NationalDebt1>(new NationalDebt1());rt1 = shared_ptr<Realty1>(new Realty1());}void BuyFund() {gu1->Buy();gu2->Buy();gu3->Buy();nd1->Buy();rt1->Buy();}void SellFund() {gu1->Sell();gu2->Sell();gu3->Sell();nd1->Sell();rt1->Sell();}
};
//客户端使用基金类
int main(int argc, char *argv[])
{shared_ptr<Fund> jijin(new Fund());//基金购买jijin->BuyFund();//基金赎回jijin->SellFund();return 0;
}

Facade门面模式 [李建忠C++笔记]

”接口隔离“模式

  • 在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案。
  • 典型模式
    • Facade
    • Proxy
    • Adapter
    • Mediator

动机(Motivation)

  • 上述A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。
  • 如何简化外部客户程序和系统间的交互接口?如何将外部客户程序的演化和内部子系统的变化之间的依赖相互解耦。

模式定义

为子系统中的一组接口提供一个一致(稳定)的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用(复用)。——《设计模式》GoF

要点总结

  • 从客户程序的角度来看,Facade模式简化了整个组件系统的接口,对于组件内部与外部客户程序来说,达到了一种”解耦“的效果——内部子系统的任何变化不会影响到Facade接口的变化。
  • Facade设计模式更注重从架构的层次去看整个系统,而不是单个类的层次。Facade很多时侯更是一种架构设计模式。
  • Facade设计模式并非一个集装箱,可以任意地放进任何多个对象。Facade模式中组建的内部应该是”相互耦合关系比较大的一系列组件“,而不是一个简单的功能集合。

[大话设计模式C++版] 第12章 牛市股票还会亏钱 —— 外观模式相关推荐

  1. 《大话设计模式》之--第12章 牛市股票还会亏钱?----外观模式

    http://blog.csdn.net/monkey_d_meng/article/details/5696192 第12章 牛市股票还会亏钱?----外观模式 12.1牛市股票还会亏钱? &quo ...

  2. 《大话设计模式》—— 读后感 (12)牛市股票还会亏钱?—— 外观模式

    外观模式 为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.(摘抄) 外观模式体现了依赖倒转原则和迪米特法则,抽出来一个外观类作为客户端调用接口,当 ...

  3. 第十二章 牛市股票还会亏钱-外观模式(读书笔记)

    1.由于众多投资者对众多股票的联系太多,反而不利于操作,这在软件中是不是就称为耦合性过高.而有了基金以后,变成众多用户只和基金打交道,关心基金的上涨和下跌就可以了,而实际上的操作却是基金经理人在与上千 ...

  4. 大话设计模式-第12章 牛市股票还会亏钱?--外观模式

    第12章 牛市股票还会亏钱?--外观模式 12.2 股民炒股代码 //股票1 class Stock1 { //卖股票 public void Sell() { Console.WriteLine(& ...

  5. 【设计模式】牛市股票还会亏钱 --- 外观模式

    一,概述 外观模式是软件工程中常用的一种软件设计模式.它为子系统中的一组接口提供一个统一的高层接口.使用子系统更容易使用. 二,例如 股民买股票,大部分散户自己买股票.国债.房地产,然后到时机抛售.这 ...

  6. 《大话设计模式》——读后感 (9)牛市股票还会亏钱?——外观模式

    原文中对外观模式的定义为:    外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子类系统更加的容易使用[DP]. 从定义理解: 1.外观模式是为子系统提供 ...

  7. 【结构型模式】《大话设计模式》——读后感 (9)牛市股票还会亏钱?——外观模式

    原文中对外观模式的定义为:    外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子类系统更加的容易使用[DP]. 从定义理解: 1.外观模式是为子系统提供 ...

  8. 牛市股票还会亏钱?----外观模式

    <大话设计模式>之--第12章 牛市股票还会亏钱?----外观模式 外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容 ...

  9. 牛市股票还会亏钱? 外观模式

    12.1 牛市股票还会亏钱 12.2 股民炒股代码 namespace 外观模式 {class Program{static void Main(string[] args){Stock1 gu1 = ...

最新文章

  1. hibernate Disabling contextual LOB creation as connection was null
  2. Linux开发中 MD5值的计算
  3. [reference]-ARM/TEE/security等论文中的缩写和参考文献
  4. 《知识图谱》赵军 目录
  5. iOS Xcode全面剖析
  6. xml方式实现aop-快速入门
  7. Python面试题总结(6)--数据类型(综合)
  8. 重建道路(洛谷-P1272)
  9. mysql win linux性能对比,不同系统上 MySQL 的性能对比
  10. oracle SEQUENCE解释和用法
  11. JavaScript 带给学习者的意外和深入认识
  12. python-gui-pyqt5的使用方法-8--实际案例可参考使用
  13. html判断图片资源是否存在,javascript怎么判断图片是否存在?
  14. 大学生签到系统理论模型2.0
  15. 计算机禁用网络后怎么打开,无线网关,教您笔记本无线网络禁用后怎么开启
  16. 兰州工业学院有计算机专业,兰州工业学院计算机协会
  17. 大数据分析与可视化介绍,基于机器学习的大数据分析具有哪些独特的特点
  18. 调研当前大学生的三个痛点
  19. 对话华纳前CEO西尔弗曼:如何成功打造电影《神奇女侠》
  20. php绘制时钟刻度,html5 画布时钟效果

热门文章

  1. 计算机视觉(CV)机器学习(ML)顶会CVPR ICCV ECCV ICML ICLR NeurIPS文章学习链接汇总
  2. winform 使用SplashScreen窗口
  3. AutoFlowLayout的报错处理
  4. cin.tie(0)和ios::sync_with_stdio(false)
  5. 北京筑龙CTO吴英礼受邀在清华大学互联网产业研究院做分享
  6. Java中生产者和消费者总结
  7. ue4html插件,UE4插件Mirror
  8. 诚心希望大家可以关注一下这个游戏公司:飞鱼科技
  9. acc--›Android无障碍开发手势操作
  10. EAST的EPTC骗局