前戲:設計模式簡介
設計模式是面向對象設計的解決方案,是復用性程序設計的經驗總結。(與語言無關,任何語言都可以實現設計模式)
設計模式根據使用目的的不同而分為創建型模式(Creational Pattern),結構性模式(Structural Pattern)和行為型模式(Behavioral Pattern)
創建型模式:提出來對象創建的解決方案以及數據封裝的方法。降低了創建對象時代碼實現的復雜度,是對象的創建時能夠滿足特定的要求。例如工程模式,抽象工廠模式,單例模式,生成器模式
結構型模式:描述了對象之間的體系結構,通過組合,繼承等方式改善體系結構,降低體系結構中的組件依賴性。例如,適配器模式。橋模式,組合模式,裝飾器模式,外觀模式等。
行為模式:描述了對象之間的交互和各自的職責,有助于實現程序中對象的通訊和流程的控制。例如:迭代器模式,解釋器模式,中介者模式,觀察者模式等。
使用python同樣可以實現各種設計模式,而且實現過程比較簡單。
一:工廠模式
在工廠方法模式中,工廠方法用于創建產品。并隱藏了產品對象實例化的過程。過程方法根據不同的參數生成不同的對象。因此客戶程序只需要知道工廠類和產品的父類,并不需要知道產品的創建過程以及返回產品的類型。
例如:定義Factory類創建不同的Fruit對象,Apple類和Banana類繼承自Fruit類。那么這兩個類(Apple和和Banana類就是我們需要去生成的產品)
實現工廠方法(簡單版本)
class Factory:def createFruit(self,fruit):if fruit == "apple":return Apple()elif fruit == "banana":return Banana()class Fruit:def __str__(self):return "fruit"class Apple(Fruit):def __str__(self):return "apple"class Banana(Fruit):def __str__(self):return "banana"if __name__ == "__main__":factory = Factory()a = factory.createFruit("apple")b = factory.createFruit("banana")print(a,b) #apple banana
簡單實現,并不完美,后面補上