python設計模式(九):外觀模式

# -*- coding:utf-8 -*-

class API1:

def Save(self):
print(保存數據A)

def Del(self):
print(刪除數據A)

class API2:

def Save(self):
print(保存數據B)

def Del(self):
print(刪除數據B)

class Facade:

def __init__(self):
self._api1 = API1()
self._api2 = API2()

def SaveAll(self):
[obj.Save() for obj in [self._api1, self._api2]]

def DelAll(self):
[obj.Save() for obj in [self._api1, self._api2]]

if __name__ == __main__:
test = Facade()
test.SaveAll()
test.DelAll()

----------------
保存數據A
保存數據B
刪除數據A
刪除數據B

外觀模式(Facade),亦稱「過程模式」, 為子系統中的一組介面提供一個一致的界面,Facade模式定義了一個高層介面,這個介面使得這一子系統更加容易使用。

與介面相關的適配器模式《python設計模式(五):適配器模式——各種類介面的合併》有所不同的是外觀模式是為大系統下的小系統設計統一的介面,而適配器模式是針對不同系統各種介面調用而設計。

在以下情況下可以考慮使用外觀模式:

(1)設計初期階段,應該有意識的將不同層分離,層與層之間建立外觀模式。

(2) 開發階段,子系統越來越複雜,增加外觀模式提供一個簡單的調用介面。

(3) 維護一個大型遺留系統的時候,可能這個系統已經非常難以維護和擴展,但又包含非常重要的功能,為其開發一個外觀類,以便新系統與其交互。 [

優點

(1)實現了子系統與客戶端之間的松耦合關係。

(2)客戶端屏蔽了子系統組件,減少了客戶端所需處理的對象數目,並使得子系統使用起來更加容易。

推薦閱讀:

如何掌握高級React設計模式: 複合組件【譯】
深入淺出設計模式C++實現(2)——觀察者模式
模板模式——個人修鍊
深入淺出設計模式C++實現(1)——策略模式

TAG:Python | 設計模式 |