浅谈Python设计模式 -- 门面模式

在面向对象程序设计中,解耦是一种推崇的理念。但事实上由于某些系统中过于复杂,从而增加了客户端与子系统之间的耦合度。例如:在家观看多媒体影院时,更希望按下一个按钮就能实现影碟机,电视,音响的协同工作,而不是说每个机器都要操作一遍。这种情况下可以采用外观模式,即引入一个类对子系统进行包装,让客户端与其进行交互。
 

门面模式(Facade Pattern):

外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。外观模式又称为门面模式,它是一种对象结构型模式。

与建造者模式非常类似,门面模式强调将子系统在对外接口中进行组合构建,进而完成某些流程、功能;建造者模式则强调将子步骤在对外接口中进行组合构建,完对象的创建。门面模式可以由多个建造者模式组合而成。

 

实例:

有一组火警报警系统,由三个子元件构成:一个警报器,一个喷水器,一个自动拨打电话的装置。

 

代码实现:

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 runAll(self):
        self.alarm_sensor.run()
        self.water_sprinker.run()
        self.emergency_dialer.run()
 
if __name__=="__main__":
    emergency_facade=EmergencyFacade()
    emergency_facade.runAll()

 

博主实际开发中的应用:PDF心电报告生成过程、简历文件内容提取过程。


版权声明:本文为bocai_xiaodaidai原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。