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设计模式-外观模式相关推荐

  1. Python设计模式-建造者模式

    Python设计模式-建造者模式 代码基于3.5.2,代码如下; #coding:utf-8 #建造者模式 class Burger():name = ""price = 0.0d ...

  2. Python设计模式-状态模式

    Python设计模式-状态模式 代码基于3.5.2,代码如下; #coding:utf-8 #状态模式class state():def writeProgram(self,work):raise N ...

  3. Python设计模式-备忘录模式

    Python设计模式-备忘录模式 代码基于3.5.2,代码如下; #coding:utf-8 #备忘录模式 import randomclass gameCharacter():vitality = ...

  4. Python设计模式-解释器模式

    Python设计模式-解释器模式 代码基于3.5.2,代码如下; #coding:utf-8 #解释器模式class PlayContext():play_text = Noneclass Expre ...

  5. Python设计模式-命令模式

    Python设计模式-命令模式 代码基于3.5.2,代码如下; #coding:utf-8 #命令模式class barbecuer():def bakeButton(self):print(&quo ...

  6. Python设计模式-策略模式

    Python设计模式-策略模式 代码基于3.5.2,代码如下; #coding:utf-8 #策略模式class sendInterface():def send(self,value):raise ...

  7. Python设计模式-桥接模式

    Python设计模式-桥接模式 基于Python3.5.2,代码如下 #coding:utf-8class Shape():name = ""param = "" ...

  8. Python设计模式-代理模式

    Python设计模式-代理模式 基于Python3.5.2,代码如下 #coding:utf-8info_struct = dict() info_struct["addr"] = ...

  9. 设计模式--------外观模式

    设计模式--------外观模式 介绍外观模式的四大问题 现在的写法有什么问题吗? 为什么要用外观模式? 什么是外观模式? 外观模式有什么好处? 使用一个例子进行问题的说明 假如要制作一个智能系统,要 ...

最新文章

  1. ESXI5.5添加本地磁盘出错的解决
  2. websocket检测服务器是否断开_websocket – 如何检测用户是否因网络断开而离开Phoenix通道?...
  3. 4G EPS 的网络协议栈
  4. 深度学习框架 通道顺序
  5. javaScript call 函数的用法说明
  6. 网站分类前导:获取网站标题和描述及对相关信息进行分词处理
  7. AI基础:一文看懂BERT
  8. 异常通知(After Throwing Advice)
  9. js取小数点后两位数的方法
  10. 洛谷 P2384 最短路题解
  11. 2017.9.13 序列统计 思考记录
  12. PostgreSQL9.6+PostGIS2.3学习笔记(一)导入shp文件
  13. Shape Completion using 3D-Encoder-Predictor CNNs and Shape Synthesis 第二部分
  14. 洛谷——P1476 休息中的小呆
  15. mysql双主日志_MySQL双主双从配置开启二进制日志
  16. 超级简单Python学生信息管理系统设计与实现.zip(论文+项目源码+使用说明书)
  17. 解决Ubuntu显卡驱动的问题
  18. batch_size详解
  19. win7下笔记本电脑给手机开热点
  20. Android 撕开衣服解析

热门文章

  1. 女程序员也有35岁危机焦虑吗?
  2. Arm收购进展、元宇宙、GPU涨价……听听黄仁勋怎么说
  3. 腾讯云存储产品矩阵全面升级,发布三维生态战略
  4. 神经架构搜索在视频理解中研究进展的综述
  5. 图灵奖得主Bengio再次警示:可解释因果关系是深度学习发展的当务之急
  6. “打脸”世界杯:AI界没有预测比赛的章鱼保罗
  7. 上海大学建了一个“突发事件语料库”,包括地震、恐怖袭击等5大类
  8. 李彦宏:从没觉得百度模仿谷歌;马化腾:做ICO数字货币有很多风险
  9. 如何用Python和深度神经网络识别图像?
  10. IDEA那些既好用又好玩的30多款宝贝插件,你知道多少?