Python设计模式:外观模式
2020-01-13 20:02
113 查看
设计模式七:外观模式
什么是外观模式
有助于隐藏系统的内部复杂性,并通过一个简化的接口向客户端暴露必要的部分,这就是外观模式
使用场景
要为一个复杂系统提供单个简单的入口点时,就可以使用此模式
优点:
1.可以改变系统内部代码,但是客户端代码不用关心也不受影响。
2.在多层系统中,可以为每一层引入一个外观接口,并让所有层级通过这些外观相互通信,提高了层级之间的松耦合性,尽可能保持层级独立。
典型案例
启动一台电脑,不会把内存、硬盘CPU加点运行,引导加载程序,CPU启动操作系统内核等这些复杂性暴露给客户端,而是创建一个外观(启动键)来封装整个过程,并且保证所有步骤按正确的次序运行。
补充知识
ABCMeta 抽象基类
1.需要使用metaclass关键字继承ABCmeta
2.使用@abstractmethod修饰器声明的方法在子类中必须实现
实例代码
from abc import ABCMeta,abstractmethod class Hardware(metaclass=ABCMeta): #定义硬件基类,子类必须实现 getpower start off 三个方法 @abstractmethod def __init__(self): pass def __str__(self): pass @abstractmethod def getpower(self): pass @abstractmethod def start(self): pass @abstractmethod def off(self): pass class CPU(Hardware): def __init__(self): self.name = 'CPU' def getpower(self): print('{} get power.... '.format(self.name)) def start(self): print('{} start ............OK'.format(self.name)) def off(self): print('{} off ............OK'.format(self.name)) class Disk(Hardware): def __init__(self): self.name = 'Disk' def getpower(self): print('{} get power.... '.format(self.name)) def start(self): print('{} start ............OK'.format(self.name)) def off(self): print('{} off ............OK'.format(self.name)) class Memory(Hardware): def __init__(self): self.name = 'Memory' def getpower(self): print('{} get power.... '.format(self.name)) def start(self): print('{} start ............OK'.format(self.name)) def off(self): print('{} off ............OK'.format(self.name)) class Computer: #外观 def __init__(self): #创建所有需要的硬件类实例 self.name = 'Computer' self.cpu = CPU() self.disk = Disk() self.memory = Memory() def start(self): #启动入口 self.cpu.getpower() self.disk.getpower() self.memory.getpower() self.memory.start() self.disk.start() self.cpu.start() print('{} start ............OK'.format(self.name)) def off(self): #关闭入口 self.cpu.off() self.memory.off() self.disk.off() print('{} off ............OK'.format(self.name)) def main(): pc = Computer() #用户只需要知道启动方法,无需知道启动细节,下面关闭同理 pc.start() print() pc.off() if __name__ == "__main__": main()
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Python设计模式-外观模式
- python设计模式之外观模式
- 举例分析Python中设计模式之外观模式的运用
- Python的结构型设计模式之外观模式
- Python设计模式(9)-外观模式
- Python设计模式(9)-外观模式
- [Python设计模式] 第12章 基金理财更省事——外观模式
- Python设计模式(九)【外观模式】
- python设计模式-外观模式
- Python设计模式07-外观模式
- 设计模式之python版(八)--外观模式
- Python设计模式——外观模式
- Python设计模式之外观模式实例详解
- 设计模式十三(外观模式,python语言实现)
- 设计模式-外观模式
- JAVA设计模式之门面模式(外观模式)
- C#设计模式(11)——外观模式
- 设计模式--适配器模式、外观模式
- 【设计模式 】一 简单工厂模式 (python实现)
- 研磨设计模式解析及python代码实现——(三)适配器模式(Adapter)