建造者模式

Builder Pattern

將複雜對象的構建與其表示分離。

Example: 假期規劃


建造者模式會將類別分為三類:
分別是指揮者類別 (Director)、建造者類別 (Builder) 與 產品類別 (Product) 。

通常會透過指揮者來決定建造過程。
有時侯會省略指揮者,改由客戶端直接決定建造過程。


優點:
可以按步驟,一步步地創建出物件。
將創建物件的邏輯與物件本身的邏輯分離。

缺點:
會使程式碼變得複雜。


與其他模式的比較:

[工廠方法模式]:
工廠方法模式中,不同分類的產品都有了對應的工廠。
每個不同的選擇都是物件層級。

建造者模式中,分離了建造者與產品。
每個不同的選擇都是步驟層級。


而建造者模式常常會搭配流式接口 (Fluent Interface) 的寫作風格。
流式接口通常依賴於方法鏈 (Method Chaining) 。

藉由每個方法都回傳物件本身,來增加程式的可讀性。

ʕ •ᴥ•ʔ:Laravel 中的 query builder ,用的就是建造者模式的概念。

Share