Python外观模式
来源:互联网 发布:qsfp28光模块端口 编辑:程序博客网 时间:2024/06/08 00:22
外观模式
- 许多情况下,我么不想把内部复杂性暴露给客户端。外观模式有助于隐藏系统的内部复杂性,并通过一个简化的接口向客户端暴露必要的部分。
- 外观模式跟代理模式有点像,都是在客户端和目标类之间建一个中间的类,客户端不直接调用目标的类,而是通过先调用中间类的方法,由中间类来实现怎么调用目标类。
- 外观模式的目的是通过建立一个中间类,把调用目标类的代码都封装好,例如有时候目标类有很多个,逐一得去调用它们会很麻烦,这样通过中间类封装好的接口,客户端的调用就好很简单。
- 使用外观模式的最常见理由是为一个复杂系统提供单个简单的入口点。引入外观之后,客户端代码通过简单地调用一个方法/函数就能使用一个系统。同时,系统内部并不会丢失任何功能,外观只是封装了内部系统。
应用案例
from enum import Enumfrom abc import ABCMetaState = Enum('State', 'new running sleeping restart zobie')class Server(metaclass=ABCMeta): #@abstractmethod def __init__(self): pass def __str__(self): return self.name #@abstractmethod def boot(self): pass #@abstractmethod def kill(self): pass#一个模块化的操作系统可以有很多服务进程:文件服务进程、进程服务进程等。class FileServer(Server):#文件服务进程 def __init__(self): self.name = 'FileServer' self.state = State.new def boot(self): print('booting the {}'.format(self)) self.state = State.running def kill(self, restart=True): print('killing {}'.format(self)) self.state = State.restart if restart else State.zobie def create_file(self, user, name, permissions):#用于创建文件 print('trying to create the file {} for user {} with permissions {}'.format(name, user, permissions))class ProcessServer(Server):#进程服务进程 def __init__(self): self.name = 'ProcessServer' self.state = State.new def boot(self): print('booting the {}'.format(self)) self.state = State.running def kill(self, restart=True): print('killing {}'.format(self)) self.state = State.restart if restart else State.zombie def create_process(self, user, name):#用于创建进程 print('trying to create the process {} for user {}'.format(name, user))#OperatingSystem类是一个外观class OperatingSystem: def __init__(self):#__init__()方法中创建所有需要的服务进程 self.fs = FileServer() self.ps = ProcessServer() def start(self):#start()方法是系统的入口点,供客户端代码使用 [i.boot for i in (self.fs, self.ps)] def create_file(self, user, name, permissions): return self.fs.create_file(user, name, permissions) def create_process(self, user, name): return self.ps.create_process(user, name)def main(): os = OperatingSystem() os.start() os.create_file('duxu', 'file1', '-rw-r-r') os.create_process('duxu', 'process1')if __name__ == '__main__': main()----------输出:trying to create the file file1 for user duxu with permissions -rw-r-rtrying to create the process process1 for user duxu
阅读全文
0 0
- 外观模式(python)
- Python外观模式
- Python设计模式-外观模式
- python设计模式(外观模式)
- Python设计模式(九)【外观模式】
- python设计模式之外观模式
- 外观(Facade)模式[python版]
- 外观模式Python版--牛市股市还会亏钱?
- 设计模式之python版(八)--外观模式
- 设计模式十三(外观模式,python语言实现)
- 大话设计模式(Python版)--外观模式
- Python的结构型设计模式之外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- 外观模式
- spark系列
- php 文件读行赋值数组 效率对比 file feof
- 以中文为查询条件查询mysql数据库时有数据却查不到数据或者中文乱码的问题
- Spring for Dynamic Datasource
- kotlin基础语法
- Python外观模式
- MSTR
- 使用Spring的@Scheduled实现定时任务
- apk利用命令行签名
- KMP 剪花布条 hdu 2078
- 数据流中的中位数(java版)
- sqlserver查询报从char数据类型到datetime数据类型的转换导致datetime值越界
- 计算广告干货整理
- mysql客户端连接不上,但是网页端的可以