建造者(builder)模式也被稱為生成器模式,建立型模式是主要是為了解決物件的建立的方式,相較於單態則是為了保證建立的物件的唯一性問題,建造者模式是為了解決複雜物件的建立,尤其是子物件的構建過程存在順序和邏輯關係的時候。
比如物件由多個複雜的子物件組成的情況,多個物件組成的方式一般較為穩定,但是子物件的建立過程可能會發生變化,根據ocp原則,可以考慮對子物件的建立過程進行封裝。
乙個通用建立型模式的使用可能會有如下部分組成:
組成部分
型別作用
product
類建立的內容
builder
介面包含返回product的build或者composite方法
concretebuilder
具體建造類
實現了builder介面的具體建造類,此類在載入時會建立乙個product物件
director
調配類一般此類的構建函式包含builder型別的引數,通過此類提供統一的調配,包括順序和邏輯,簡單場景下可以不需要此類的存在
}執行結果為:
computer information:
cpu: 2.5 ghz quad-core intel core i7
memory: 16 gb 1600 mhz ddr3
graphics: intel iris pro 1536 mb
motherboard: 820-00***
但是需要注意此模式解決的問題和factory不同,因此它是在具體建造類的載入期間就生成了product的例項,可結合如下示例**進行進一步的思考
builder builder =
newconcretebuilder()
; director director =
newdirector
(builder)
; computer computer = director.
buildcomputer
("820-00***"
,"intel iris pro 1536 mb"
,"2.5 ghz quad-core intel core i7"
,"16 gb 1600 mhz ddr3");
system.out.
println
(computer)
; computer computer2 = director.
buildcomputer
("830-00***"
,"intel iris pro 3032 mb"
,"2.5 ghz quad-core intel core i7"
,"32 gb 1600 mhz ddr3");
system.out.
println
(computer2)
; system.out.
println
(computer)
;
執行結果如下所示
computer information:
cpu: 2.5 ghz quad-core intel core i7
memory: 16 gb 1600 mhz ddr3
graphics: intel iris pro 1536 mb
motherboard: 820-00***
computer information:
cpu: 2.5 ghz quad-core intel core i7
memory: 32 gb 1600 mhz ddr3
graphics: intel iris pro 3032 mb
motherboard: 830-00***
computer information:
cpu: 2.5 ghz quad-core intel core i7
memory: 32 gb 1600 mhz ddr3
graphics: intel iris pro 3032 mb
motherboard: 830-00***
建立型模式 建造者
結構圖 模式說明 擴充套件點在builder介面的具體實現類,如果有乙個新的實現類concretebuilder3,則只需要新增該實現類,其他部分不用修改。客戶端需要知道使用哪個具體的builder實現類。將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。客戶端 public...
建立型模式 建造者模式
建造者模式 builder pattern 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。與抽象工廠的區別 在建造者模式裡,有個指導者,由指導者來管理建造者,使用者和指導聯絡,指導者聯絡建造者最後得到產品牌。即建造模式可以強制實現一種分步驟進行的建造過程。建造者模式將複雜...
建立型模式 建造者模式
這段時間剛好要觀摩持久層框架mybatis,恰好看到mybatis 複雜的工廠物件 sqlsessionfactory 的生成類 sqlsessionfactorybuilder 不禁想起gof 23種設計模式中的建造者模式。對照現實中,你去買車時只需知道你要買車的型別,便可到店中購得心滿意足的產品...