浅谈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,大家也可以去看看,感觉将的很通俗易懂。
本文来自博客园,作者:Little_five,转载请注明原文链接:https://www.cnblogs.com/littlefivebolg/p/9929877.html