何時采用
l 從代碼角度來說, 如果你希望分離復雜類型構建規則和類型內部組成,或者希望把相同的構建過程用於構建不同類型的時候可以考慮使用建造者模式。
l 從應用角度來說, 如果你希望解耦產品的創建過程和產品的具體配件,或者你希望為所有產品的創建復用一套穩定並且復雜的邏輯的時候可以考慮使用建造者模式。
實現要點
l 對象的構建過程由指導者完成,具體的組成由具體建造者完成,表示與構建分離。
l 建造者和指導者是建造者模式的關鍵點,如果進行合並或省略就可能會轉變到模版方法模式。
l 如果對象的建造步驟是簡單的,並且產品擁有一致的接口可以轉而使用工廠模式。
注意事項
l 返回產品的方法是否必須,是否一定要在抽象建造者中有接口根據實際情況而定。如果它們有統一的接口可以在抽象建造者中體現這個抽象方法,如果沒有統一的接口(比如,生產毫無關聯的產品)則可以在具體建造者中各自實現這個方法,如果創建的產品是一種產品,那麼甚至可以省略返回產品的接口(本文的例子就是這樣)。