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

Main函数

int _tmain(int argc, _TCHAR* argv[])
{
Stock1* gu1 = new Stock1();
Stock2* gu2 = new Stock2();
Stock3* gu3 = new Stock3();
NationalDebt1* nd1 = new NationalDebt1();
Realty1* rt1 = new Realty1();
gu1->Buy();
gu2->Buy();
gu3->Buy();
nd1->Buy();
rt1->Buy();
return 0;
}

类的定义:

#pragma once
#include <iostream>
//
class Stock1
{
public:
void Sell(void)
{
std::cout << "Sell Stock1..." << std::endl;
};
void Buy(void)
{
std::cout << "Buy Stock1..." << std::endl;
};
};
//
class Stock2
{
public:
void Sell(void)
{
std::cout << "Sell Stock2..." << std::endl;
};
void Buy(void)
{
std::cout << "Buy Stock2..." << std::endl;
};
};
//
class Stock3
{
public:
void Sell(void)
{
std::cout << "Sell Stock3..." << std::endl;
};
void Buy(void)
{
std::cout << "Buy Stock3..." << std::endl;
};
};
//
class NationalDebt1
{
public:
void Sell(void)
{
std::cout << "Sell NationalDebt1..." << std::endl;
};
void Buy(void)
{
std::cout << "Buy NationalDebt1..." << std::endl;
};
};
//
class Realty1
{
public:
void Sell(void)
{
std::cout << "Sell Realty1..." << std::endl;
};
void Buy(void)
{
std::cout << "Buy Realty1..." << std::endl;
};
};


2.此时用户不需要了解股票,甚至可以对股票一无所知,买了基金就回家睡觉,一段时间后再赎回就可以大把数钱。参与股票的具体买卖都由基金公司完成。客户端代码非常简洁明了。

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

Main函数:

#include "fund.h"
int _tmain(int argc, _TCHAR* argv[])
{
Fund* jijin = new Fund();
//基金购买
jijin->BuyFund();
//基金赎回
jijin->SellFund();
delete jijin;
return 0;
}

Fund.h的定义(Stock.h中的定义同上,所以在这里省略):

#include "Stock.h"
class Fund
{
public:
Fund()
{
m_pStock1 = new Stock1();
m_pStock2 = new Stock2();
m_pStock3 = new Stock3();
m_pNationalDebt1 = new NationalDebt1();
m_pRealty1 = new Realty1();
};
~Fund()
{
delete m_pStock1;
delete m_pStock2;
delete m_pStock3;
delete m_pNationalDebt1;
delete m_pRealty1;
};
void BuyFund(void)
{
m_pStock1->Buy();
m_pStock2->Buy();
m_pStock3->Buy();
m_pNationalDebt1->Buy();
m_pRealty1->Buy();
};
void SellFund(void)
{
m_pStock1->Sell();
m_pStock2->Sell();
m_pStock3->Sell();
m_pNationalDebt1->Sell();
m_pRealty1->Sell();
};
private:
Stock1* m_pStock1;
Stock2* m_pStock2;
Stock3* m_pStock3;
NationalDebt1* m_pNationalDebt1;
Realty1* m_pRealty1;
};


4.即使没有听说过外观模式,也完全有可能在很多时候使用它,因为它完美地体现了依赖倒转原则和迪米特法则的思想,所以是非常常用的模式之一。


5.何时使用外观模式:首先,在设计初期阶段,应该要有意识的将不同的两个层分离。,层与层之间建立外观Facade,使得耦合大大降低。增加外观Facade可以提供一个简单的接口,减少他们之间的依赖。

第十二章 牛市股票还会亏钱-外观模式(读书笔记)相关推荐

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

    源码可以在这里找到 大话设计模式C++版 股民炒股代码 //main.cpp #include <iostream>using namespace std;//股票1 class Stoc ...

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

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

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

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

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

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

  5. 第十二章 牛市股票还亏钱—外观模式

    仅仅是个人学习笔记,不具备参考价值 定义 外观模式(Facade,也叫做门面模式):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用.个人的理解就是 ...

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

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

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

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

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

    外观模式以及动机 外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用. 动机:组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户 ...

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

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

最新文章

  1. 【Python】数据提取xpath和lxml模块(豆瓣电影排行榜的爬虫)
  2. WebSocket探秘
  3. jQuery的遍历方法
  4. mysql表定义外键语法_mysql设置外键的语法怎么写?
  5. 打破学习的玻璃墙_打破Google背后的创新深度学习
  6. Java谓词的延迟执行
  7. freeRTOS V10.0.1移植到STM32F407标准库 - 环境Keil5
  8. poj2778DNA Sequence (AC自动机+矩阵快速幂)
  9. DNN: ModuleSettings Vs TabModuleSettings
  10. Android项目混淆配置
  11. 计算机工程与应用论文模板,计算机工程与应用论文模板
  12. 【2021年度总结】:23岁的流水账
  13. matlab单位阶跃响应与单位脉冲响应,python 已知响应函数求单位阶跃响应或脉冲响应...
  14. mac电脑抹掉数据要多久_Mac系统如何恢复出厂设置
  15. 计算机应用无法打开,为什么电脑界面的部分软件无法打开
  16. 云服务器上手是多么的简单?你看了就知道了
  17. Markdown小技巧:代码格式、缩进和字体大小
  18. 流量就是这么省出来的
  19. VSCode插件之实时字数统计与选中词英汉互译
  20. Tekla创建箱型柱变截面段插件

热门文章

  1. 三角形接法永磁同步电机的FOC+SVPWM控制
  2. 【安卓学习积累】IntentService的源码分析
  3. 拿来就用的脚本案例(三)
  4. ZZNU 1995: cots' times
  5. Arduino远程无线通信
  6. 最新版本 release版本 ceph分布式存储搭建(rook-1.8.6)
  7. 计算机系学天体物理,中科院南京天文光学技术研究所专业介绍:天体物理
  8. hashmap与concurrenthashmap源码解析
  9. 在线记录源码调试之@EnableAspectJAutoProxy与Spring AOP(三)调用被代理方法userServiceImpl.save(user)
  10. U盘数据恢复软件使用教程