看得懂的外觀設計模式 python3 實現

外觀設計模式在平常的代碼編寫中,會經常使用。在平常代碼的編寫時,即使程序員沒有從標準上認識過外觀設計模式,但在開發的過程中,也會從代碼的多方面角度考慮,從而編寫了符合外觀設計模式的代碼。

很多程序員都有這種感覺,在學習一些自認爲沒有了解的技術時,發現自己已經接觸過了一部分內容,這一部分內容有標準上書面上有着準確的定義。

擁有豐富項目經驗的程序員,在考慮了項目整體代碼架構、性能優化等方面後,編寫的程序將和一些標準定義的技術發生雷同。

學習設計模式,是促進相關技術的增長,但是在沒有豐富的項目經驗前,很大一部分學習了設計模式的開發者,將不懂如何使用設計模式融入到自己的代碼編寫之中。所以我寫的設計模式文章,大多數只是簡單的實現了設計模式,並不會把多餘的內容加入到實現之中。因爲我的觀點是“徐徐漸進,在有了項目經驗後,在進一步考慮項目的優化迭代”。

迴歸正題,開始講解外觀設計模式。
外觀設計模式,簡單的來說,是通過編寫一個簡單的接口,不暴露系統的複雜性,增加這個系統的易用性,屏蔽內部實現。
在日常開發中,屏蔽系統內部實現是經常做的事情,所以對於一部分開發者來說,外觀設計模式是在項目中經常使用的技術。接下來就來看一下外觀設計模式的基本實現。

例:通過一個按鈕,控制空調的啓動。
分析空調的啓動可以簡要的分爲以下步驟:點擊按鈕——>收到點擊按鈕的信號——>開啓製冷——>開啓溫度檢測自動調溫。

我們首先新建一個製冷器與溫度計類,模擬製冷器與溫度計的啓動:

#製冷器
class Refrigerator():
    def start(self):
        print('製冷器啓動...')
    def stop(self):
        print('製冷器停止...')
#溫度計
class Thermometer():
    def start(self):
        print("溫度計啓動...")
    def stop(self):
        print("溫度計停止...")

常規情況下,我們可以直接調用製冷器後再調用溫度計,這個時候就比較麻煩,內部系統暴露出來,使用極其繁瑣。
接下來新建一個空調類,用以統一調用這兩個類,實現製冷的開始。

#空調類
class AirConditioner():
	#初始化
    def __init__(self):
        self.refrigerator=Refrigerator()
        self.thermometer=Thermometer()
    #開始鍵按下   
    def startBtnClick():
        print('空調啓動鍵按下...')
        self.start()
    #停止鍵按下    
    def stopBtnClick():
        print('空調關閉鍵按下...')
        self.stop()
    #開始方法    
    def start(self):
        print('空調啓動...')
        self.refrigerator.start()
        self.thermometer.start()
    #停止方法    
    def stop(self):
        print('空調停止...')
        self.refrigerator.stop()
        self.thermometer.stop()

以上的空調類中,初始化中實例化了製冷器類與溫度計檢測類,在開始按鈕點擊的方法中,啓動了開始方法,開始方法打開了製冷器與溫度檢測;同理,停止方法也是如此。調用方法如下:

ac=AirConditioner()
ac.start()

新建空調後,開始即可,查看運行效果:
在這裏插入圖片描述
最後查看完整的代碼:

#空調類
class AirConditioner():
	#初始化
    def __init__(self):
        self.refrigerator=Refrigerator()
        self.thermometer=Thermometer()
    #開始鍵按下   
    def startBtnClick():
        print('空調啓動鍵按下...')
        self.start()
    #停止鍵按下    
    def stopBtnClick():
        print('空調關閉鍵按下...')
        self.stop()
    #開始方法    
    def start(self):
        print('空調啓動...')
        self.refrigerator.start()
        self.thermometer.start()
    #停止方法    
    def stop(self):
        print('空調停止...')
        self.refrigerator.stop()
        self.thermometer.stop()
        
#製冷器
class Refrigerator():
    def start(self):
        print('製冷器啓動...')
    def stop(self):
        print('製冷器停止...')
#溫度計
class Thermometer():
    def start(self):
        print("溫度計啓動...")
    def stop(self):
        print("溫度計停止...")

ac=AirConditioner()
ac.start()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章