通俗 Python 設計模式——建造者模式
建造者模式,是建立型模式中的第三種模式,一般的開發過程中用的比較少。所以只做簡單的介紹。
根據書上的介紹,建造者模式通常用於補充工廠模式的不足,尤其是在如下場景中:
- 要求一個物件有不同的表現,並且希望將物件的構造與表現解耦
- 要求在某個時間點建立物件,但在稍後的時間點再訪問
看起來是很難理解,其實最常用的一個場景就是運算元據庫的 orm。回想一下,orm 中一個很重要的概念:延遲載入,其實就是建造者模式最常見的應用。
在一開始將 orm 物件構造出來,但並不實際查詢資料,而是在用到具體資料的時候才向資料庫進行查詢。
並且會根據不同的物件,向不同的表進行查詢。
書上原作者的例子比較複雜,就不搬運了,建造者模式在日常開發中確實用的很少。真正遇到時,去查一查怎麼實現就好了。這裡給出一個書中翻譯評審者精簡後的程式碼示例:
class Pizza:
def __init__(self, builder):
self.garlic = builder.garlic
self.extra_cheese = builder.extra_cheese
def __str__(self):
garlic = 'yes' if self.garlic else 'no'
cheese = 'yes' if self.extra_cheese else 'no'
info = ('Garlic: {}'.format(garlic), 'Extra cheese: {}'.format(cheese))
return '\n'.join(info)
class PizzaBuilder:
def __init__(self):
self.extra_cheese = False
self.garlic = False
def add_garlic(self):
self.garlic = True
return self
def add_extra_cheese(self):
self.extra_cheese = True
return self
def build(self):
return Pizza(self)
if __name__ == '__main__':
pizza = Pizza.PizzaBuilder().add_garlic().add_extra_cheese().build()
print(pizza)
這個程式碼其實是建造者模式的一種變體,實現了鏈式呼叫。其實這種所謂的鏈式呼叫,也並不是什麼神奇的事情,只是在建造者類的每一個方法裡返回其本身——return self
——罷了。
相關文章
- Python設計模式-建造者模式Python設計模式
- 設計模式-建造者模式設計模式
- 設計模式 --建造者模式設計模式
- 設計模式----建造者模式設計模式
- 設計模式 —— 建造者模式設計模式
- 設計模式(建造者模式)設計模式
- 設計模式 | 建造者模式設計模式
- 設計模式之建造者模式設計模式
- java設計模式-建造者模式Java設計模式
- 設計模式之【建造者模式】設計模式
- 設計模式(六)——建造者模式設計模式
- 設計模式(十六):建造者模式設計模式
- 設計模式-建造者模式(Builder)設計模式UI
- 設計模式實戰 - 建造者模式設計模式
- GoLang設計模式01 - 建造者模式Golang設計模式
- 設計模式--建造者模式(Builder Pattern)設計模式UI
- Java 設計模式(二)《建造者模式》Java設計模式
- golang設計模式之建造者模式Golang設計模式
- 極簡設計模式-建造者模式設計模式
- Java設計模式----建造者模式(Builder)Java設計模式UI
- JAVA設計模式之建造者模式Java設計模式
- 設計模式系列之「建造者模式」設計模式
- 設計模式學習-建造者模式設計模式
- 設計模式之-建造者模式-Builder設計模式UI
- 設計模式 #3 (原型模式、建造者模式)設計模式原型
- 設計模式(Swift) - 3.觀察者模式、建造者模式設計模式Swift
- 設計模式之建造者模式(BuilderPattern)設計模式UI
- Java設計模式之(三)——建造者模式Java設計模式
- 設計模式【4】-- 建造者模式詳解設計模式
- 我的Java設計模式-建造者模式Java設計模式
- 23種設計模式之--建造者模式設計模式
- 23種設計模式之建造者模式設計模式
- 設計模式--建造者模式Builder(建立型)設計模式UI
- Java設計模式之建造者模式(Builder)Java設計模式UI
- 通俗 Python 設計模式——原型設計模式Python設計模式原型
- 用Python實現設計模式——建造者模式和原型模式Python設計模式原型
- 通俗 Python 設計模式——代理模式Python設計模式
- android常用設計模式之建造者設計模式Android設計模式