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

平田發表於2017-01-16

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

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

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

假設我們需要將計算機抽象,並且這個計算機啟動僅需兩步:呼叫BIOS和核心,關閉同樣只是順序相反。那麼首先我們宣告一個 Computer 類,它只提供 startstop 方法供外部呼叫。

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

然後我們需要將 BiosKernal 類宣告出來。

class Bios(object):
    def __init__(self):
        pass
    def start(self):
        print('bios start ok')
    def stop(self):
        print('bios stop ok')
class Kernal(object):
    def __init__(self):
        pass
    def start(self):
        print('kernal start ok')
    def stop(self):
        print('kernal stop ok')

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

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

相關文章