通俗 Python 設計模式——建造者模式
建造者模式,是創建型模式中的第三種模式,一般的開發過程中用的比較少。所以只做簡單的介紹。
根據書上的介紹,建造者模式通常用於補充工廠模式的不足,尤其是在如下場景中:- 要求一個對象有不同的表現,並且希望將對象的構造與表現解耦
- 要求在某個時間點創建對象,但在稍後的時間點再訪問
看起來是很難理解,其實最常用的一個場景就是操作資料庫的 orm。回想一下,orm 中一個很重要的概念:延遲載入,其實就是建造者模式最常見的應用。
在一開始將 orm 對象構造出來,但並不實際查詢數據,而是在用到具體數據的時候才向資料庫進行查詢。
並且會根據不同的對象,向不同的表進行查詢。
class Pizza:n def __init__(self, builder):n self.garlic = builder.garlicn self.extra_cheese = builder.extra_cheesenn def __str__(self):n garlic = yes if self.garlic else non cheese = yes if self.extra_cheese else non info = (Garlic: {}.format(garlic), Extra cheese: {}.format(cheese))n return n.join(info)nn class PizzaBuilder:n def __init__(self):n self.extra_cheese = Falsen self.garlic = Falsenn def add_garlic(self):n self.garlic = Truen return selfnn def add_extra_cheese(self):n self.extra_cheese = Truen return selfnn def build(self):n return Pizza(self)nnif __name__ == __main__:n pizza = Pizza.PizzaBuilder().add_garlic().add_extra_cheese().build()n print(pizza)n
這個代碼其實是建造者模式的一種變體,實現了鏈式調用。其實這種所謂的鏈式調用,也並不是什麼神奇的事情,只是在建造者類的每一個方法里返回其本身——return self——罷了。
推薦閱讀: