Py学习  »  Python

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

1_bit • 3 年前 • 358 次点击  

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

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

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

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

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

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

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

#制冷器
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
 
358 次点击