第 6 章 外观模式
6.2 软件的例子
6.3 应用案例
6.4 实现
DEMO
from enum import Enum
from abc import ABCMeta, abstractmethod
# 抽象基类,用 @abstractmethod 修饰的表示该方法强制要求子类实现
class Server(metaclass=ABCMeta):
@abstractmethod
def __init__(self):
pass
def __str__(self):
return self.name
@abstractmethod
def boot(self):
pass
@abstractmethod
def kill(self, restart=True):
pass
# 需要隐藏的服务之一
class FileServer(Server):
def __init__(self):
pass
def boot(self):
pass
def kill(self, restart=True):
pass
def create_file(self, user, name, permissions):
pass
# 需要隐藏的服务之一
class ProcessServer(Server):
def __init__(self):
pass
def boot(self):
pass
def kill(self, restart=True):
pass
def create_process(self, user, name):
pass
# 外观实现,提供接口给外部
class OperatingSystem:
def __init__(self):
self.fs = FileServer()
self.ps = ProcessServer()
def start(self):
[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('foo', 'hello', '-rw-r-r')
os.create_process('bar', 'ls /tmp')
if __name__ == '__main__':
main()Last updated