外观模式Python版--牛市股市还会亏钱?
2015-03-09 17:36
211 查看
简介
外观模式为子系统中的一组接口提供了一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式通过引入一个外观类,由外观类分别调用内部的多个模块来实现功能,从而客户端只需要和外观类交互就可以。
外观模式的目的不是给子系统添加新的功能接口,而是包装已有的功能,为了让外部减少与子系统多个模块的交互,松散耦合。
外观模式的本质就是封装交互,简化调用。
示例
股民炒股代码class Stock1: def Sell(self): print "Stock 1 sell." def Buy(self): print "Stock 1 buy." class Stock2: def Sell(self): print "Stock 2 sell." def Buy(self): print "Stock 2 buy." class Stock3: def Sell(self): print "Stock 3 sell." def Buy(self): print "Stock 3 buy." class NationalDebt1: def Sell(self): print "NationalDebt 1 sell." def Buy(self): print "NationalDebt 1 buy." class Realty1: def Sell(self): print "Realty 1 sell." def Buy(self): print "Realty 1 buy." if __name__ == "__main__": gu1 = Stock1() gu2 = Stock2() gu3 = Stock3() nd1 = NationalDebt1() rt1 = Realty1() gu1.Buy() gu2.Buy() gu3.Buy() nd1.Sell() rt1.Sell()投资基金代码
class Fund: gu1 = None gu1 = None gu1 = None nd1 = None rt1 = None def __init__(self): gu1 = Stock1() gu2 = Stock2() gu3 = Stock3() nd1 = NationalDebt1() rt1 = Realty1() def BuyFund(): gu1.Buy() gu2.Buy() gu3.Buy() nd1.Buy() rt1.Buy() def SellFund(): gu1.Sell() gu2.Sell() gu3.Sell() nd1.Sell() rt1.Sell() if __name__ == "__main__": jijin = Fund() jijin.BuyFund() jijin.SellFund()
class SubSystemOne: def MethodOne(self): print "SubSystem one" class SubSystemTwo: def MethodTwo(self): print "SubSystem Two" class SubSystemThree: def MethodThree(self): print "SubSystem Three" class SubSystemFour: def MethodFour(self): print "SubSystem Four" class Facade: one = None two = None three = None four = None def __init__(self): self.one = SubSystemOne() self.two = SubSystemTwo() self.three = SubSystemThree() self.four = SubSystemFour() def MethodA(self): print "MethodA() ------- " one.MethodOne() two.MethodTwo() four.MethodFour() def MethodB(self): print "MethodB() ------- " two.MethodTwo() three.MethodThree() if __name__ == "__main__": facade = Facade() facade.MethodA() facade.MethodB()
外观模式的优缺点
优点:松散耦合-----松散了客户端与子系统的耦合关系,让子系统内部的模块能更加容易的扩展和维护
简单易用-----无需了解子系统内部的实现
更好的划分访问的层次------把需要暴露给外部的功能集中到外观中,隐藏内部的细节
缺点:
过多的或者不合理的facade容易让人迷惑。到底是调用外观好还是直接调用模块好?
外观模式在什么时候使用最好?
1. 在设计初期,就要将数层之间分离,层之间建立外观。2. 在开发阶段,子系统因为演进变得越来越复杂
3. 在后期维护阶段,代码思路清晰,比较容易维护。
相关模式
外观模式和中介者模式中介者模式主要用来封装多个对象之间相互的交互,多用在系统内部的多个模块之间;而外观模式封装的是单向的交互,从客户端访问系统的调用。
在中介者模式的实现里面,需要实现具体的交互功能;而外观模式本身并不实现任何功能,只是组合调用。
中介者模式的目的主要是松散多个模块之间的耦合,把这些耦合关系全部放在中介者中实现。而外观模式主要是简化客户端的调用。
相关文章推荐
- 【设计模式】牛市股票还会亏钱 --- 外观模式
- 【设计模式】牛市股票还会亏钱 --- 外观模式
- 《大话设计模式》之--第12章 牛市股票还会亏钱?----外观模式
- 《大话设计模式》—— 读后感 (12)牛市股票还会亏钱?—— 外观模式
- 第十二章 牛市股票还会亏钱-外观模式(读书笔记)
- 大话设计模式-第12章 牛市股票还会亏钱?--外观模式
- 外观模式--牛市股票还会亏钱
- 《大话设计模式》--牛市股票还会亏钱?--外观模式<Facade>(12)
- 《大话设计模式》之--第12章 牛市股票还会亏钱?----外观模式
- 【结构型模式】《大话设计模式》——读后感 (9)牛市股票还会亏钱?——外观模式
- 《大话设计模式》——读后感 (9)牛市股票还会亏钱?——外观模式
- 《大话设计模式》——读后感 (9)牛市股票还会亏钱?——外观模式
- python设计模式-外观模式
- Python设计模式(九)【外观模式】
- python设计模式之外观模式
- 外观模式(python)
- 设计模式之python版(八)--外观模式
- 研磨设计模式解析及python代码实现——(二)外观模式(Facade)
- 大话设计模式(Python版)--外观模式
- 举例分析Python中设计模式之外观模式的运用