天天看點

生成器模式:分離整體建構算法和部件構造

場景分析(如圖)

生成器模式:分離整體建構算法和部件構造
定義及本質

定義:将一個複雜對象的建構與它的表示分離,使得同樣的建構過程可以建立不同的表示。
本質:分離整體建構算法和部件構造。重在解決構造複雜對象的問題。
結構示意圖:           
生成器模式:分離整體建構算法和部件構造

Director:指導者,負責把建構過程獨立出來,并指導裝配過程,實作整體建構算法,但不負責具體的實作,因而是相對不變的;而是将建立群組合具體部件通過委托交給Builder完成。

Builder:生成器接口,定義各個部件的操作。

ConcreteBuilder:生成器,負責具體的實作,實作各個部件的建立、組裝,最終提供可擷取組裝完成後的産品對象的方法。

Builder模式包括兩部分:一部分是部件構造和産品裝配,另一部分是整體建構算法。主要強調是整體建構的算法,而靈活擴充和切換部件的具體構造和産品裝配的方式。

UML類圖

生成器模式:分離整體建構算法和部件構造

調用時序圖

生成器模式:分離整體建構算法和部件構造

優缺點

(1)松散耦合、複用性

生成器模式使用統一的建構算法實作産品建構和産品表現上分離,将産品建構過程獨立出來,使它和具體産品的表現松耦合;Director是統一的、固定不變的,這使得建構算法可以複用。           

(2)容易改變産品内部表示

具體生成器實作部分是可變的,如需改變産品的内部表示,隻需要切換Builder的具體實作即可。           

(3)生成器模式的重心在于分離整體建構算法(Director)和部件構造(ConcreteBuilder),分步驟建構對象可以說是整體建構算法的一個簡單表現,或者說是一個附帶物。

繼續閱讀