1. 定義
????? 建造模式將一個產品的內部表象與產品生成過程分割出來,從而可以使一個建造過程生成具有不同的內部表象的產品對象。
?2. 使用的原因
???? 是為了將構建復雜對象的過程和它的部件解耦。
?3.?適用的情況
????? 建造模式利用一個導演者對象和具體建造者對象一個一個地建造出所有的零件,從而建造出完整的產品對象。建造者模式將產品的結構和產品的零件建造過程對客戶端隱藏起來,把對建造過程進行指揮的責任和具體建造零件和責任分割開來,達到責任劃分和封裝的目的。
4. 類圖結構及其說明
???? 1)建造模式的類圖如下所示:
??????
????? 2)各類的說明如下:
?????????i)抽象建造者(Builder)角色:給出一個抽象接口,以規(guī)范產品對象的各個組成成分的構造;
???????? ii)具體建造者(ConcretBuilder)角色:它在應用程序的調用下創(chuàng)建產品的實例。完成任務為;
????????????? a)? 實現抽象建造者Builder接口,給出一步步完成創(chuàng)建產品實例的操作;
????????????? b)? 在創(chuàng)建完成后,提供產品的實例。
?????????iii) 導演者(Director角色):調用具體建造者角色以創(chuàng)建產品對象;
???????? iv)產品(Product)角色:建造中的復雜對象。一般情況下,一個系統(tǒng)不止一個產品類。
5. 應用舉例
????????以下實例建造一所Amigo想要的一所房子,呵呵,初中時的夢想:)
??????? 一所小小的竹子做成的房子,滿屋掛滿風鈴,有一個茶幾,坐落在山上。
?????1) 需求分析
????????Amigo的這所房子的建造跟我們討論的建造模式很是相關哦,竹子、風鈴、茶幾相當于我們所說的“零件”??,最后建造成的房子相當于Amigo夢寐以求的竹房。呵呵,我們開始建造吧,完成Amigo的夢想!
???????? i)我們首先建立一個接口Builder,它定義如何創(chuàng)建我想要的房子的各個組成部分:
????????????

















????























?



























?????? iv)House類
????????????




?????? v) 下面來看看如何使用Builder模式來創(chuàng)建我的竹房,呵呵。
??????????




???????:),建得差不多吧,還差點什么呢,以后慢慢想咯。
參考書籍:《Java與模式》
??????????????????? 《Patterns in Java》
?