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、不符合开闭原则,一旦系统形成后需要修改,几乎只能重写外观代码,这比继承或重写方法,或者其他一些符合开闭原则的模式风险都会大一些。
Python设计模式-外观模式相关推荐
- Python设计模式-建造者模式
Python设计模式-建造者模式 代码基于3.5.2,代码如下; #coding:utf-8 #建造者模式 class Burger():name = ""price = 0.0d ...
- Python设计模式-状态模式
Python设计模式-状态模式 代码基于3.5.2,代码如下; #coding:utf-8 #状态模式class state():def writeProgram(self,work):raise N ...
- Python设计模式-备忘录模式
Python设计模式-备忘录模式 代码基于3.5.2,代码如下; #coding:utf-8 #备忘录模式 import randomclass gameCharacter():vitality = ...
- Python设计模式-解释器模式
Python设计模式-解释器模式 代码基于3.5.2,代码如下; #coding:utf-8 #解释器模式class PlayContext():play_text = Noneclass Expre ...
- Python设计模式-命令模式
Python设计模式-命令模式 代码基于3.5.2,代码如下; #coding:utf-8 #命令模式class barbecuer():def bakeButton(self):print(&quo ...
- Python设计模式-策略模式
Python设计模式-策略模式 代码基于3.5.2,代码如下; #coding:utf-8 #策略模式class sendInterface():def send(self,value):raise ...
- Python设计模式-桥接模式
Python设计模式-桥接模式 基于Python3.5.2,代码如下 #coding:utf-8class Shape():name = ""param = "" ...
- Python设计模式-代理模式
Python设计模式-代理模式 基于Python3.5.2,代码如下 #coding:utf-8info_struct = dict() info_struct["addr"] = ...
- 设计模式--------外观模式
设计模式--------外观模式 介绍外观模式的四大问题 现在的写法有什么问题吗? 为什么要用外观模式? 什么是外观模式? 外观模式有什么好处? 使用一个例子进行问题的说明 假如要制作一个智能系统,要 ...
最新文章
- ESXI5.5添加本地磁盘出错的解决
- websocket检测服务器是否断开_websocket – 如何检测用户是否因网络断开而离开Phoenix通道?...
- 4G EPS 的网络协议栈
- 深度学习框架 通道顺序
- javaScript call 函数的用法说明
- 网站分类前导:获取网站标题和描述及对相关信息进行分词处理
- AI基础:一文看懂BERT
- 异常通知(After Throwing Advice)
- js取小数点后两位数的方法
- 洛谷 P2384 最短路题解
- 2017.9.13 序列统计 思考记录
- PostgreSQL9.6+PostGIS2.3学习笔记(一)导入shp文件
- Shape Completion using 3D-Encoder-Predictor CNNs and Shape Synthesis 第二部分
- 洛谷——P1476 休息中的小呆
- mysql双主日志_MySQL双主双从配置开启二进制日志
- 超级简单Python学生信息管理系统设计与实现.zip(论文+项目源码+使用说明书)
- 解决Ubuntu显卡驱动的问题
- batch_size详解
- win7下笔记本电脑给手机开热点
- Android 撕开衣服解析
热门文章
- 女程序员也有35岁危机焦虑吗?
- Arm收购进展、元宇宙、GPU涨价……听听黄仁勋怎么说
- 腾讯云存储产品矩阵全面升级,发布三维生态战略
- 神经架构搜索在视频理解中研究进展的综述
- 图灵奖得主Bengio再次警示:可解释因果关系是深度学习发展的当务之急
- “打脸”世界杯:AI界没有预测比赛的章鱼保罗
- 上海大学建了一个“突发事件语料库”,包括地震、恐怖袭击等5大类
- 李彦宏:从没觉得百度模仿谷歌;马化腾:做ICO数字货币有很多风险
- 如何用Python和深度神经网络识别图像?
- IDEA那些既好用又好玩的30多款宝贝插件,你知道多少?