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

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

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

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

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

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

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

#制冷器
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. VS2010 无法调试、断点 的解决方法
  2. html时钟翻牌效果,干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)
  3. 证明AVL树的上界和下界
  4. 二十一、PHP框架Laravel学习笔记——模型的访问器和修改器
  5. Asynchronous(异步处理)
  6. spring+mybatis+druid+mysql+maven事务配置
  7. 分布式文件系统-HDFS(   HDFS全称是Hadoop Distributed System)
  8. Ubuntu MySQL性能_入门系列之在Ubuntu上使用MySQL设置远程数据库优化站点性能
  9. 3. vi 简介(3)
  10. Rust : Box 为什么这里并不需要拆箱?
  11. Safari兼容IE
  12. 解决黑苹果核显HD4400开机卡在“io console user: gio screen lock state 3”问题/HD4400核显只有7M问题
  13. win10 家庭版 升级专业版
  14. 神经网络计算棒怎么用,微软神经网络计算棒
  15. 世界三大数学猜想 哥德巴赫猜想 费马大定理: 费马猜想: 质数算法c++ 1.NP完全问题 2.霍奇猜想 3.庞加莱猜想 4.黎曼假设 5.杨-米尔斯存在性和质量缺口 6.纳卫尔-
  16. FinClip11月产品更新:FIDE 插件开发功能优化;文档中心捉“虫”竞赛火热开启
  17. Spire.PDF 教程:在C#中显示或隐藏PDF图层
  18. C语⾔核⼼基础知识之printf
  19. c语言编程自幂数,【C语言基础】-自幂数优化-这个算法快得像一道闪电
  20. 第一次玩switch,需不需要再买一个任天堂Pro手柄

热门文章

  1. .NET 中 async 和 await
  2. 有温度的技术,改善上亿人的生活
  3. 《ASP.NET Core 真机拆解》 送书活动结果公布
  4. await,async 我要把它翻个底朝天,这回你总该明白了吧
  5. IdentityServer4 4.x版本 配置Scope的正确姿势
  6. [一起读源码]走进C#并发队列ConcurrentQueue的内部世界 — .NET Core篇
  7. 集成平台集群任务动态分派
  8. 使用 Ocelot 匹配路由的方法匹配路由
  9. 浅议gRPC的数据传输机制和回调机制
  10. 在 ABP vNext 中编写仓储单元测试的问题一则