01月16, 2017

通俗 Python 设计模式——外观模式

外观模式是一种在日常开发中经常用到的设计模式,它与之前提到过的适配器模式有一定的相似之处,但理念是不一样的。

外观模式的核心在于将复杂的内部实现包装起来,只向外界提供简单的调用接口。类似现实世界中的电脑,开机按钮可以说就是一个简单的调用接口,帮用户屏蔽了复杂的内部电路。

在程序开发中,外观模式通常在层次结构之间提供清晰简单的互相调用。书上的例子引入了一些不必要的东西,这里我用计算机的例子来说明:

假设我们需要将计算机抽象,并且这个计算机启动仅需两步:调用BIOS和内核,关闭同样只是顺序相反。那么首先我们声明一个 Computer 类,它只提供 startstop 方法供外部调用。

class Computer(object):
    def __init__(self):
        self.bios = Bios()
        self.kernal = Kernal()
    def start(self):
        for i in (self.bios, self.kernal):
            i.start()
    def stop(self):
        for i in (self.kernal, self.bios):
            i.stop()

然后我们需要将 BiosKernal 类声明出来。

class Bios(object):
    def __init__(self):
        pass
    def start(self):
        print('bios start ok')
    def stop(self):
        print('bios stop ok')
class Kernal(object):
    def __init__(self):
        pass
    def start(self):
        print('kernal start ok')
    def stop(self):
        print('kernal stop ok')

然后对于用户来讲,当他实例化了一个 computer 对象后,如果需要执行启动操作,只需要调用 computer.start() 即可完成所有启动过程,无需自己逐步的调用 bioskernal 进行启动。如此一来就实现了将复杂逻辑进行封装的目的。

这个模式因为十分常用,所以开发者应该都相对比较熟悉,而且其本身的实现也比较简单,所以就以这个简单的例子作为说明即可。

本文链接:http://pycode.cc/post/easy-python-design-pattern-facade-design-pattern.html

-- EOF --

Comments