建立型模式 建造者

2021-10-07 12:28:08 字數 3088 閱讀 3579

建造者(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種設計模式中的建造者模式。對照現實中,你去買車時只需知道你要買車的型別,便可到店中購得心滿意足的產品...