社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

看得懂的外观设计模式 python3 实现

1_bit • 5 年前 • 471 次点击  

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

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

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

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

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

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

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

#制冷器
class Refrigerator():
    def start(self):
        print('制冷器启动...')
    def stop(self):
        print('制冷器停止...')
#温度计
class Thermometer():
    def start(self):
        print("温度计启动...")
    def stop(self):
        print("温度计停止...")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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

#空调类
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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24

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

ac=AirConditioner()
ac.start()
  • 1
  • 2

新建空调后,开始即可,查看运行效果:
在这里插入图片描述
最后查看完整的代码:




    
#空调类
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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/71036
 
471 次点击