大话设计模式,让你的代码更完美7---外观模式
来源:互联网 发布:中信淘宝v卡金卡积分 编辑:程序博客网 时间:2024/06/05 02:34
外观模式:为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,该接口使得这一子系统更加容易使用。
这一模式是最最最常用到的和见到的设计模式。
需求:股民投资购买股票、期货、国债等等
菜鸟代码:
//股票1 class Stock1 { //卖股票 public void Sell() { Console.WriteLine(" 股票1卖出"); } //买股票 public void Buy() { Console.WriteLine(" 股票1买入"); } } //股票2 class Stock2 { //卖股票 public void Sell() { Console.WriteLine(" 股票2卖出"); } //买股票 public void Buy() { Console.WriteLine(" 股票2买入"); } } //国债1 class NationalDebt1 { //卖国债 public void Sell() { Console.WriteLine(" 国债1卖出"); } //买国债 public void Buy() { Console.WriteLine(" 国债1买入"); } }主函数:
static void Main(string[] args) { Stock1 gu1 = new Stock1(); Stock2 gu2 = new Stock2(); Stock3 gu3 = new Stock3(); NationalDebt1 nd1 = new NationalDebt1(); gu1.Buy(); gu2.Buy(); nd1.Buy(); gu1.Sell(); gu2.Sell(); nd1.Sell(); Console.Read(); } }老鸟代码:
class Fund { Stock1 gu1; Stock2 gu2; Stock3 gu3; NationalDebt1 nd1; Realty1 rt1; public Fund() { gu1 = new Stock1(); gu2 = new Stock2(); nd1 = new NationalDebt1(); } public void BuyFund() { gu1.Buy(); gu2.Buy(); nd1.Buy(); } public void SellFund() { gu1.Sell(); gu2.Sell(); nd1.Sell(); } }主函数:
static void Main(string[] args) { Fund jijin = new Fund(); jijin.BuyFund(); jijin.SellFund(); Console.Read(); }
对于菜鸟来言,所有的行为都需要自己(主函数)去操作,买股票,卖股票,买期货,买期货等等。。。。
对于老鸟来言,既然都要操作完全可以进行包装一下,将各个投资都封装到Fund中,然后统一进行买卖操作,在这里股票投资可以用到之前的克隆哦,
也可以用到代理proxy(让基金管理人管理),也可以用到工厂模式。
暂且不提上述的操作,相对客户端来言,我不需要知道谁做的,怎么做的,我只需要看到你买卖就OK
所以相对于外观类fund类而言,他需要了解所有子系统(股票、期货)的方法和属性,然后进行组合,以备客户端调用。
结构图对比:
总结:在设计初期,要有意识的将不同的两个层分离(三层架构),在层与层之间建立外观模式,降低之间耦合性。
因为开发阶段子系统(买卖股票/期货)往往不断的进行重构演化而更加复杂,使用外观模式可以减少两者间依赖。
比如:主函数是A系统,股票买卖是C系统,期货买卖是D系统,如果之间互联,A,C,D系统的任意一方变更都会导致另一方代码的大量修改,
使用外观模式Facade则可以使各系统之间清晰交互,如图
0 0
- 大话设计模式,让你的代码更完美7---外观模式
- 大话设计模式,让你的代码更完美1---工厂模式
- 大话设计模式,让你的代码更完美2---嵌套装饰模式
- 大话设计模式,让你的代码更完美3---代理模式
- 大话设计模式,让你的代码更完美6---模版方法模式/迪米特
- 大话设计模式,让你的代码更完美8---建造者模式
- 大话设计模式,让你的代码更完美9---旁观者模式
- 大话设计模式,让你的代码更完美10---抽象工厂模式
- 大话设计模式,让你的代码更完美11---状态模式
- 大话设计模式,让你的代码更完美5---浅复制和深复制
- 大话设计模式,让你的代码更完美4---简单工厂模式和工厂方法模式
- 大话设计模式-外观模式
- 大话设计模式-外观模式
- 大话设计模式----外观模式
- 大话设计之外观模式
- 学习这些设计模式,让你写出更优雅的代码
- 大话设计模式之外观模式
- 大话设计模式之-----外观模式
- springmvc入门程序
- 软件测试的分类——按测试手段来分类
- 第七章 评估推理关系(一)
- [Java并发包学习八]深度剖析ConcurrentHashMap
- VS远程调试器(MSVSMON.EXE)似乎没有在远程计算机上运行,解决办法之云服务器版
- 大话设计模式,让你的代码更完美7---外观模式
- RPC原理
- NumPy doc (二)
- MFC创建主对话框为非模态对话框
- 2.http dns
- Caffe 训练遇到的问题
- Java中的多态性理解(注意与C++区分)
- FlowNet: Learning Optical Flow with Convolutional Networks
- sql查询作业-保单涉及表的复杂查询