天天看點

Java設計模式--生成器模式生成器模式Builder Pattern類圖模式的結構與使用簡單的例子運作截圖生成器模式的優點适用生成器模式的情景下載下傳源碼請到

将一個複雜對象的建構與它的表示分離,使同樣的建構過程可以建立不同的表示。

separate the construction of a complex object from its representation so that the same construction process can create different representations.

Java設計模式--生成器模式生成器模式Builder Pattern類圖模式的結構與使用簡單的例子運作截圖生成器模式的優點适用生成器模式的情景下載下傳源碼請到

生成器模式的結構中包括四個角色。

+ 産品(product):具體生成器要構造的複雜對象。

+ 抽象生成器(abstract builder):抽象生成器是一個接口,該接口除了為建立一個product對象的各個元件定義了若幹個方法外,還定義傳回product對象的方法。

+ 具體生成器(concrete builder):實作builder接口的類,具體生成器将實作builder接口所定義的方法。

+ 指揮者(director):指揮者是一個類,該類需含有builder接口聲明的變量。指揮者的職責是負責向使用者提供具體生成器,即指揮者将請求具體生成器來構造使用者所需要的product對象,如果所請求的具體生成器成功地構造出product對象,指揮者就可以讓該具體生成器傳回所構造的product對象。

Java設計模式--生成器模式生成器模式Builder Pattern類圖模式的結構與使用簡單的例子運作截圖生成器模式的優點适用生成器模式的情景下載下傳源碼請到

生成器模式将對象的構造過程封裝在具體生成器中,使用者使用不同的具體生成器就可以得到該對象的不同表示。

生成器模式将對象的構造過程從建立對象的類中分離出來,使使用者無需了解該對象的具體元件。

可以更加精細有效地控制對象的構造過程。生成器将對象的構造過程分解成若幹步驟,這就使程式可以更加精細,有效地控制整個對象的構造。

生成器模式将對象的構造過程與建立該對象類解耦,使對象的建立更加靈活有彈性。

當增加新的具體生成器時,不必修改指揮者的代碼,即該模式滿足開-閉原則。

當系統準備為使用者提供一個内部結構複雜的對象,而且在構造方法中編寫建立該對象的代碼無法滿足使用者需求時,就可以使用生成器模式來構造這樣的對象。

當某些系統要求對象的構造過程必須獨立于建立該對象的類時。

<a href="https://github.com/androidwolf">mygithub</a>