设计模式之外观模式学习
来源:互联网 发布:大数据思维与决策心得 编辑:程序博客网 时间:2024/05/18 00:40
外观模式Facade(门面模式):为系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。它完美的体现了迪米特原则和依赖倒转原则,是非常常用的设计模式之一。
对于书上举得买股票和基金的例子。炒股新手由于对证券知识不是完全了解,再加上股票种类众多,这种情况下很容易赔钱。而购买基金却减少很多风险,此时并不需要对股票有过多的了解,甚至可以对股票一无所知,仅仅关注基金的上涨和下跌,而实际的操作却由基金经理与上千只股票打交道。
代码:
#include<iostream>using namespace std;class Stock1{public: Stock1() { } void buy() { cout<<"buy stock 1!"<<endl; } void sell() { cout<<"sell stock 1"<<endl; }};class Stock2{public: Stock2() { } void buy() { cout<<"buy stock 2!"<<endl; } void sell() { cout<<"sell stock 2"<<endl; }};class Stock3{public: Stock3() { } void buy() { cout<<"buy stock 3!"<<endl; } void sell() { cout<<"sell stock 3"<<endl; }};class Fund//外观类,封装对各种股票的各种操作。 {public: Stock1 *stock1; Stock2 *stock2; Stock3 *stock3;public: Fund() { stock1=new Stock1; stock2=new Stock2; stock3=new Stock3; } void sell() { stock1->sell(); stock2->sell(); stock3->sell(); } void buy() { stock1->buy(); stock2->buy(); stock3->buy(); }};int main(int argc,char**argv){Fund *fund=new Fund;fund->buy();fund->sell(); return 0;}
外观模式使用的时机
首先,在设计的初期,应该有意识的将不同的两个层分离。比如经典的三层构架,就需要考虑在数据访问层和业务逻辑层,业务逻辑层和表示层层与层之间使用外观模式,这样就可以为复杂的子系统提供简单的接口,使得耦合性大大降低。
其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂。大多数设计模式会产生很多很小的类,这本是好事,但这也给外部调用它们的客户程序带来使用上的困难。使用外观模式提供简单接口,减少它们之间的依赖。
第三,在维护一个遗留的大型系统时,可能这个系统已经变得非常难以维护和扩展。因为它包含非常重要的功能,新的需求开发必须依赖它,这时候使用外观模式也很合适,使用外观模式为设计粗糙或是高度复杂的遗留代码提供简单的接口。让外观类提供与遗留代码交互的功能。
- 设计模式学习之---Facade(外观)模式
- 设计模式之外观模式学习
- 设计模式学习之外观模式
- HeadFrist设计模式学习之外观模式
- 设计模式学习之路-外观模式
- 设计模式学习笔记之外观模式
- 设计模式学习--外观
- 设计模式之外观
- 设计模式之外观
- 设计模式 之 外观
- 设计模式之外观
- 设计模式学习----外观模式
- 设计模式学习-----外观模式
- 设计模式学习--外观模式
- 设计模式学习--外观模式
- 学习设计模式-外观模式
- 设计模式学习:外观模式
- 设计模式学习-外观模式
- oracle查看当前用户信息
- IO(三)的操作的特点
- [Android] ExpandableListActivity的使用
- IO(四)File类
- UBUNTU搭建android SDK开发环境
- 设计模式之外观模式学习
- 设计模式(十)—— Template 模式
- jQuery.extend 函数详解
- 修改SQL Server数据库中的逻辑文件名
- IO(五) Properties
- HTML <!DOCTYPE> 标签
- 由平面上的一些点,求可构成的正方形的数目
- 枚举使用
- C# flash屏蔽右键