外观设计模式在平常的代码编写中,会经常使用。在平常代码的编写时,即使程序员没有从标准上认识过外观设计模式,但在开发的过程中,也会从代码的多方面角度考虑,从而编写了符合外观设计模式的代码。

很多程序员都有这种感觉,在学习一些自认为没有了解的技术时,发现自己已经接触过了一部分内容,这一部分内容有标准上书面上有着准确的定义。

拥有丰富项目经验的程序员,在考虑了项目整体代码架构、性能优化等方面后,编写的程序将和一些标准定义的技术发生雷同。

学习设计模式,是促进相关技术的增长,但是在没有丰富的项目经验前,很大一部分学习了设计模式的开发者,将不懂如何使用设计模式融入到自己的代码编写之中。所以我写的设计模式文章,大多数只是简单的实现了设计模式,并不会把多余的内容加入到实现之中。因为我的观点是“徐徐渐进,在有了项目经验后,在进一步考虑项目的优化迭代”。

回归正题,开始讲解外观设计模式。
外观设计模式,简单的来说,是通过编写一个简单的接口,不暴露系统的复杂性,增加这个系统的易用性,屏蔽内部实现。
在日常开发中,屏蔽系统内部实现是经常做的事情,所以对于一部分开发者来说,外观设计模式是在项目中经常使用的技术。接下来就来看一下外观设计模式的基本实现。

例:通过一个按钮,控制空调的启动。
分析空调的启动可以简要的分为以下步骤:点击按钮——>收到点击按钮的信号——>开启制冷——>开启温度检测自动调温。

我们首先新建一个制冷器与温度计类,模拟制冷器与温度计的启动:

#制冷器
class Refrigerator():def start(self):print('制冷器启动...')def stop(self):print('制冷器停止...')
#温度计
class Thermometer():def start(self):print("温度计启动...")def stop(self):print("温度计停止...")

常规情况下,我们可以直接调用制冷器后再调用温度计,这个时候就比较麻烦,内部系统暴露出来,使用极其繁琐。
接下来新建一个空调类,用以统一调用这两个类,实现制冷的开始。

#空调类
class AirConditioner():#初始化def __init__(self):self.refrigerator=Refrigerator()self.thermometer=Thermometer()#开始键按下   def startBtnClick():print('空调启动键按下...')self.start()#停止键按下    def stopBtnClick():print('空调关闭键按下...')self.stop()#开始方法    def start(self):print('空调启动...')self.refrigerator.start()self.thermometer.start()#停止方法    def stop(self):print('空调停止...')self.refrigerator.stop()self.thermometer.stop()

以上的空调类中,初始化中实例化了制冷器类与温度计检测类,在开始按钮点击的方法中,启动了开始方法,开始方法打开了制冷器与温度检测;同理,停止方法也是如此。调用方法如下:

ac=AirConditioner()
ac.start()

新建空调后,开始即可,查看运行效果:

最后查看完整的代码:

#空调类
class AirConditioner():#初始化def __init__(self):self.refrigerator=Refrigerator()self.thermometer=Thermometer()#开始键按下   def startBtnClick():print('空调启动键按下...')self.start()#停止键按下    def stopBtnClick():print('空调关闭键按下...')self.stop()#开始方法    def start(self):print('空调启动...')self.refrigerator.start()self.thermometer.start()#停止方法    def stop(self):print('空调停止...')self.refrigerator.stop()self.thermometer.stop()#制冷器
class Refrigerator():def start(self):print('制冷器启动...')def stop(self):print('制冷器停止...')
#温度计
class Thermometer():def start(self):print("温度计启动...")def stop(self):print("温度计停止...")ac=AirConditioner()
ac.start()

看得懂的外观设计模式 python3 实现相关推荐

  1. 设计模式也可以这么简单,一看就懂

    Java面试笔试面经.Java技术每天学习一点 公众号Java面试 关注我不迷路 作者:javadoop 来源:https://javadoop.com/post/design-pattern 序 一 ...

  2. php 设计模式系列,一看就懂系列之 php设计模式(一)-Go语言中文社区

    前言 一提到设计模式,很多人都是敬而远之,一方面由于设计模式有一点忽悠太理论的感觉,另一方面也会觉得设计模式有点难懂不知道该在什么场景下使用.一看就懂系列之php设计模式,主要解决两个问题: 1.用最 ...

  3. 初学者一看就懂的入门python3(多种绘图类型)

    初学者一看就懂的入门python3(多种绘图类型) 如果你之前从未接触过python,为了方便你更好理解,麻烦先去看我的 初学者一看就懂的入门python1和2 基本绘图类型 什么是matplotli ...

  4. python如何运行_家长看的懂的Python编程---电脑要如何运行Python?

    本文是<家长看的懂的Python编程>第2节,如果你还没有看过前面的章节,请移步至如下链接! 家长看的懂的Python编程---预备知识 这一章我们要正式踏上Python的学习之旅,今天我 ...

  5. [免费专栏] Android安全之Android Xposed插件开发,小白都能看得懂的教程

    也许每个人出生的时候都以为这世界都是为他一个人而存在的,当他发现自己错的时候,他便开始长大 少走了弯路,也就错过了风景,无论如何,感谢经历 Android安全付费专栏长期更新,本篇最新内容请前往: [ ...

  6. 算法精解 c语言描述 豆瓣,斯坦福大学教授亲授,这本美亚4.7星的算法书,新手程序员都看得懂!...

    原标题:斯坦福大学教授亲授,这本美亚4.7星的算法书,新手程序员都看得懂! "算法会扩展并提高大家的编程技巧,而学习基本的算法设计范式,可以和许多不同领域的不同问题密切相关,还能作为预测算法 ...

  7. 只有程序员看的懂面试圣经

    技术圈 只有程序员看的懂面试圣经|如何拿下编程面试 http://www.epubit.com.cn/article/197 当我最初开始参加编程面试的时候,我所有最心仪的公司都忽视了我.现在回头看那 ...

  8. 胖虎白话学习设计模式之外观设计模式(Facade)

    胖虎白话学习设计模式之外观设计模式(Facade) 记录胖虎学习设计模式过程,不许勿喷,转载请注明出处! http://blog.csdn.net/ljphhj 1.存在问题 开发中我们经常会遇到一种 ...

  9. 设计模式(17)-----结构型模式-----外观设计模式

    假如你现在还在为自己的技术担忧,假如你现在想提升自己的工资,假如你想在职场上获得更多的话语权,假如你想顺利的度过35岁这个魔咒,假如你想体验BAT的工作环境,那么现在请我们一起开启提升技术之旅吧,详情 ...

最新文章

  1. 基于android的语音识别
  2. python如何运行程序_02
  3. 手机协处理器java,HBase1.x实战:协处理器Java开发实例--ObserverCoprocessor
  4. 【MATLAB统计分析与应用100例】案例008:调用rand函数生成均匀分布随机数
  5. [NowCoder牛客]2021NOIP提高组模拟赛第二场T3——树数树(启发式合并堆)
  6. android tcpdump log分析,android 系统启动过程中加入tcpdump和logcat
  7. mysql所以字段_MySQL|mysql-索引
  8. 2021牛客寒假算法基础集训营6,签到题ACDFGIJ
  9. 给大家推荐个vs里面的小插件,自动对齐代码
  10. 绝对郁闷到死的NHibernate2.0。。。
  11. Grails Quartz插件,定时调度任务
  12. U盘容量变小了 -恢复U盘实际容量教程(亲试有效)
  13. 解决 Nginx Let's Encrypt HTTPS 证书 错误: 服务器缺少中间证书
  14. gromacs 中关于二级结构分析
  15. 路由器和交换机常见故障信息收集命令总结
  16. 华为交换机本地查看登录和操作日志
  17. ERC20标准函数简介与测试方法
  18. 『抽丝剥茧』手把手快速上带你开启文心大模型的奇妙冒险
  19. 访问共享提示0x80070043错误。
  20. C语言:输入某一年的第几天,计算并输出它是这一年的第几月第几日?

热门文章

  1. 万字长文,带你彻底理解EF Core5的运行机制,让你成为团队中的EF Core专家
  2. 浅析 record 使用场景
  3. 在.NET Core 中使用Quartz.NET
  4. .NET开源5年了,这些宝藏你还没get?
  5. 优化 Azure 成本,实现财务目标
  6. 做“是非题”的正确姿势
  7. 持续集成之 Nuget 进阶
  8. DotNetCore 3.0 助力 WPF本地化
  9. 高性能微服务网关.NETCore客户端Kong.Net开源发布
  10. 开源Dapper的Lambda扩展-Sikiro.Dapper.Extension V2.0