浅谈Python设计模式 - 外观模式

Posted Little_five

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈Python设计模式 - 外观模式相关的知识,希望对你有一定的参考价值。

 

  声明:本系列文章主要参考《精通Python设计模式》一书,并且参考一些资料,结合自己的一些看法来总结而来。

 外观模式

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

外观设计模式 -- 有助于隐藏系统的内部复杂性,并且通过一个简化的接口向客户端暴露必要的部分。本质上,外观是在已有复杂系统之上实现的一个抽象层。

  本来想引用书中的例子,但是其整个代码被复杂化,不好理解。然后在网上看到一篇简单易懂的例子。知乎:通俗Python设计模式-- 外观模式

 示例:

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

  当然实际上电脑的开机和关机肯定不止这些步骤,假设有很多很多步,那么这时候的外观模式显得更加重要了。只需要调用 Computer的 start 和 stop 方法即可完成开机和关机的功能,而不需要去调用某些方法去开启各个系统,比如文件系统、进程服务系统等。

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()

  然后我们需要将 Bios 和 Kernal 类声明出来。

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() 即可完成所有启动过程,无需自己逐步的调用 bios 和 kernal 进行启动。如此一来就实现了将复杂逻辑进行封装的目的。

  这其实也是Python一直提倡的封装思想,隐藏一些丑陋的系统,提供API去调用,不用管内部如何实现,只需调用API即可实现相关功能。

 

  over~~~,参考:https://zhuanlan.zhihu.com/p/24906483,大家也可以去看看,感觉将的很通俗易懂。

 

以上是关于浅谈Python设计模式 - 外观模式的主要内容,如果未能解决你的问题,请参考以下文章

浅谈.NET,C#三层架构(自己总结)

大话涉及模式Python实现-外观模式

Python设计模式-外观模式

python-外观模式

python-外观模式

《精通Python设计模式》学习结构型之外观模式