Builder Pattern
將複雜對象的構建與其表示分離。
Example: 假期規劃
建造者模式會將類別分為三類:
分別是指揮者類別 (Director)、建造者類別 (Builder) 與 產品類別 (Product) 。
通常會透過指揮者來決定建造過程。
有時侯會省略指揮者,改由客戶端直接決定建造過程。
優點:
可以按步驟,一步步地創建出物件。
將創建物件的邏輯與物件本身的邏輯分離。
缺點:
會使程式碼變得複雜。
與其他模式的比較:
[工廠方法模式]:
工廠方法模式中,不同分類的產品都有了對應的工廠。
每個不同的選擇都是物件層級。
建造者模式中,分離了建造者與產品。
每個不同的選擇都是步驟層級。
而建造者模式常常會搭配流式接口 (Fluent Interface) 的寫作風格。
流式接口通常依賴於方法鏈 (Method Chaining) 。
藉由每個方法都回傳物件本身,來增加程式的可讀性。
ʕ •ᴥ•ʔ:Laravel 中的 query builder ,用的就是建造者模式的概念。