3 建造者模式

2021-10-10 08:28:03 字數 3735 閱讀 6494

簡述:建造者模式(builder pattern)使用多個簡單的物件一步一步構建成乙個複雜的物件。這種型別的設計模式屬於建立型模式,它提供了一種建立物件的最佳方式。

也就是說不僅僅是關注 new 物件的結果,更注重物件屬性的賦值過程!

實體類 #:

public

class

computer

public

void

setcpu

(string cpu)

public string getgpu()

public

void

setgpu

(string gpu)

public string gethd()

public

void

sethd

(string hd)

public string getmemory()

public

void

setmemory

(string memory)

@override

public string tostring()

';}}

反例 #1 :

現在開始建立物件 。

public

class

negative

}

缺陷:建造複雜物件的時候,客戶端程式要炸,造成客戶端**臃腫,且違反迪公尺特法則(最少知道原則) 。

反例 #2:

將屬性賦值過程使用乙個建造類封裝起來,但此時仍然還不是建造者模式 。

public

class

negative2

}static

class

middlecomputerbuilder

}/*********************=客戶端******************************=*/

public

static

void

main

(string[

] args)

}

uml類圖如下:

缺陷:建造者遺漏部分建造步驟,編譯也會通過,會造成建造出來的物件不符合要求。比如,漏執行某一步驟時,使得部分值為 null ,後續物件屬性被呼叫時,可能會丟擲空指標nullpointerexception異常,會造成程式崩潰。

反例 #3:

定義乙個建造者介面來進行規範 。

public

class

negative3

static

class

highcomputerbuilder

implements

computerbuilder

@override

public

void

setgpu()

@override

public

void

setmemory()

@override

public

void

sethd()

@override

public computer build()

}static

class

middlecomputerbuilder

implements

computerbuilder

@override

public

void

setgpu()

@override

public

void

setmemory()

@override

public

void

sethd()

@override

public computer build()

}/***********====客戶端***********************************==*/

public

static

void

main

(string[

] args)

}

創造了建造者介面,建立者不會再遺漏步驟。uml類圖如下:

缺陷:

正例 #1:

將屬性賦值步驟,交給乙個指揮者,讓它去指揮建造者完成,我們只需要安排指揮者就行 。

public

class

negative3

static

class

highcomputerbuilder

implements

computerbuilder

@override

public

void

setgpu()

@override

public

void

setmemory()

@override

public

void

sethd()

@override

public computer build()

}static

class

middlecomputerbuilder

implements

computerbuilder

@override

public

void

setgpu()

@override

public

void

setmemory()

@override

public

void

sethd()

@override

public computer build()

}//--------------指揮者---------------//

static

class

director

}/***********====客戶端***********************************==*/

public

static

void

main

(string[

] args)

}

uml類圖如下:

此時在需要增加乙個不同配置的 lowcomputer 型別計算機,只需要編寫乙個lowcomputerbuilder類實現 computerbuilder 介面,再傳給指揮者 director 進行建立即可得到乙個 lowcomputer 型別的 computer 物件。符合開閉原則 。

總結一下建造者模式的優點:

設計模式(3) 建造者模式

建造者模式 builder pattern 將乙個複雜物件的構建與它的表示分離,使的同樣的構建過程可以建立不同的表示。建造者模式的本質是使組裝過程 用指揮者類進行封裝,從而達到解耦的目的 和建立具體產品解耦,使我們不用去關心每個元件是如何組裝的。在軟體系統中,有時需要建立乙個複雜物件,並且這個複雜物...

3 建造者模式 設計模式筆記

分類 1 建立型模式 單例模式,工廠模式,抽象工廠模式,建造者模式,原型模式 2 結構型模式 介面卡模式,橋接模式,裝飾模式,組合模式,外觀模式,享元模式,模式 3 行為型模式 模板方法模式,命令模式,迭代器模式,觀察者模式,中介者模式,備忘錄模式,直譯器模式,狀態模式,策略模式,職責鏈模式,訪問者...

建造者模式

1.定義 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。2.uml 類圖 結構 該結構 演示了複雜物件被一步一步建立的建造者模式。builder pattern structural example using system using system.collection...