外觀模式隱藏了內部物件的複雜性,向外提供了簡單的一致性介面
from enum import enum
from abc import abcmeta, abstractmethod
state = enum(
'state'
,'new running sleeping restart zombie'
)class
user
:pass
class
process
:pass
class
file
:pass
class
server
(metaclass=abcmeta)
: @abstractmethod
def__init__
(self)
:pass
def__str__
(self)
:return self.name
@abstractmethod
defboot
(self)
:pass
@abstractmethod
defkill
(self, restart=
true):
pass
class
fileserver
(server)
:def
__init__
(self)
:'''初始化檔案服務程序要求的操作'''
self.name =
'fileserver'
self.state = state.new
defboot
(self)
:print
('booting the {}'
.format
(self)
)'''啟動檔案服務程序要求的操作'''
self.state = state.running
defkill
(self, restart=
true):
print
('killing {}'
.format
(self)
)'''終止檔案服務程序要求的操作'''
self.state = state.restart if restart else state.zombie
defcreate_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
defboot
(self)
:print
('booting the {}'
.format
(self)
)'''啟動程序服務程序要求的操作'''
self.state = state.running
defkill
(self, restart=
true):
print
('killing {}'
.format
(self)
)'''終止程序服務程序要求的操作'''
self.state = state.restart if restart else state.zombie
defcreate_process
(self, user, name)
:'''檢查使用者許可權和生成pid等'''
print
("trying to create the process '{}' for user '{}'"
.format
(name, user)
)class
windowserver
:pass
class
networkserver
:pass
class
operatingsystem
:'''外觀'''
python 外觀模式
外觀模式又叫做門面模式。在物件導向程式設計中,解耦是一種推崇的理念。但事實上由於某些系統中過於複雜,從而增加了客戶端與子系統之間的耦合度。例如 在家 多 影院時,更希望按下乙個按鈕就能實現影碟機,電視,音響的協同工作,而不是說每個機器都要操作一遍。這種情況下可以採用外觀模式,即引入乙個類對子系統進行...
python 外觀模式
內容 為子系統中的一組介面提供乙個一致的介面,外觀模式定義了乙個高層介面,這個介面使得這一系統更加容易使用 角色外觀 facade 子系統類 subsystem classes 子系統 class cpu def run self print cpu開始執行 def stop self print ...
python設計模式 外觀模式
學習版本3.5.2 外觀模式 facade pattern 向客戶端提供乙個可以訪問系統的介面,隱藏了系統的複雜性。比如說,生產a產品需要abc三個流水線生產的零件,我只想管a產品的生產。class productionlinea object def create self print creat...