Python设计模式-外观模式
2017-06-24 18:38
591 查看
Python设计模式-外观模式
代码基于3.5.2,代码如下;
#coding:utf-8 # 外观模式 class AlarmSensor: def run(self): print("Alarm Ring...") class WaterSprinker: def run(self): print("Spray Water ...") class EmergencyDialer: def run(self): print("Dial 119 ...") class EmergencyFacade: def __init__(self): self.alarm_sensor = AlarmSensor() self.water_sprinker = WaterSprinker() self.emergency_dialer = EmergencyDialer() def run(self): self.alarm_sensor.run() self.water_sprinker.run() self.emergency_dialer.run() if __name__ == "__main__": EmergencyFacade().run()
外观模式分析与解读
外观模式
外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式注重统一的对象,也就是提供一个访问子系统的接口,其封装的接口理论上是不会被单独提出来用的。
代码解读
1、先定义了AlarmSensor、WaterSprinker和EmergencyDialer这三个类,分别实现了对应的run()方法; 2、定义了EmergencyFacade类来统一访问已定义的三个类的run()方法,通过EmergencyFacade类的run()方法对AlarmSensor、WaterSprinker和EmergencyDialer三个类的run()方法进行了封装。从而达到统一访问的目的。
代码运行结果如下:
”’Alarm Ring…
Spray Water …
Dial 119 …
”’
外观模式应用场景:
1、为一个复杂的子系统提供一个外界访问的接口; 2、需要简化操作步骤时。
优缺点分析
优点
1、减少了系统之间的相互依赖,提高了系统的灵活性; 2、提高了系统的安全性,封装了系统内部接口,隐藏了很多内部接口的细节.
缺点
1、不符合开闭原则,一旦系统形成后需要修改,几乎只能重写外观代码,这比继承或重写方法,或者其他一些符合开闭原则的模式风险都会大一些。
相关文章推荐
- 举例分析Python中设计模式之外观模式的运用
- 设计模式之python版(八)--外观模式
- python设计模式-外观模式
- 设计模式十三(外观模式,python语言实现)
- Python的结构型设计模式之外观模式
- Python设计模式(九)【外观模式】
- python设计模式之外观模式
- Python设计模式(9)-外观模式
- [Python设计模式] 第12章 基金理财更省事——外观模式
- Python设计模式——外观模式
- .NET设计模式(12):外观模式(Façade Pattern)
- 乐在其中设计模式(C#) - 外观模式(Facade Pattern)
- Dot Net设计模式—适配器、桥接与外观三模式之间的关系
- 设计模式之Facade(外观 总管 Manager)
- 设计模式之Facade(外观 总管 Manager)
- 乐在其中设计模式(C#) - 外观模式(Facade Pattern)
- 设计模式学习笔记(十一)——Facade外观
- 设计模式与泡mm的关系之Facade外观模式及外观模式的再思考
- 设计模式之Facade(外观)模式
- Java设计模式之外观模式研究