Python设计模式-外观模式

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、不符合开闭原则,一旦系统形成后需要修改,几乎只能重写外观代码,这比继承或重写方法,或者其他一些符合开闭原则的模式风险都会大一些。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值