通俗 Python 設計模式——外觀模式

外觀模式是一種在日常開發中經常用到的設計模式,它與之前提到過的適配器模式有一定的相似之處,但理念是不一樣的。

外觀模式的核心在於將複雜的內部實現包裝起來,只向外界提供簡單的調用介面。類似現實世界中的電腦,開機按鈕可以說就是一個簡單的調用介面,幫用戶屏蔽了複雜的內部電路。

在程序開發中,外觀模式通常在層次結構之間提供清晰簡單的互相調用。書上的例子引入了一些不必要的東西,這裡我用計算機的例子來說明:

假設我們需要將計算機抽象,並且這個計算機啟動僅需兩步:調用BIOS和內核,關閉同樣只是順序相反。那麼首先我們聲明一個 Computer 類,它只提供 start 和 stop 方法供外部調用。

class Computer(object): n def __init__(self):n self.bios = Bios()n self.kernal = Kernal()n def start(self):n for i in (self.bios, self.kernal):n i.start()n def stop(self):n for i in (self.kernal, self.bios):n i.stop()n

然後我們需要將 Bios 和 Kernal 類聲明出來。

class Bios(object): n def __init__(self):n passn def start(self):n print(bios start ok)n def stop(self):n print(bios stop ok)nnclass Kernal(object): n def __init__(self):n passn def start(self):n print(kernal start ok)n def stop(self):n print(kernal stop ok)n

然後對於用戶來講,當他實例化了一個 computer 對象後,如果需要執行啟動操作,只需要調用 computer.start() 即可完成所有啟動過程,無需自己逐步的調用 bios 和 kernal 進行啟動。如此一來就實現了將複雜邏輯進行封裝的目的。

這個模式因為十分常用,所以開發者應該都相對比較熟悉,而且其本身的實現也比較簡單,所以就以這個簡單的例子作為說明即可。

推薦閱讀:

AngularJS中的依賴注入實際應用場景?
敏捷開發中如何保證界面設計?
設計模式有何不妥,所謂的荼毒體現在哪?
設計模式之 UML 類圖
用 C++ 編程時,如果不使用設計模式,多層封裝,採用複雜的數據結構,代碼更直觀,易理解,引入(設計模式)後雖然做到了高度的解耦。但是代碼邏輯複雜了,怎麼平衡好?

TAG:Python | 设计模式 |