建造者模式

Builder Pattern

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

Example: 假期規劃


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

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


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

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


與其他模式的比較:

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

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


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

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

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