定義
將乙個複雜的物件的構建與它的表示分離,是的同樣的構建過程可以建立不同的表示。
場景初始化乙個物件特別複雜,如使用多個構造方法,或者說有很多引數,並且都有預設值時。
一般4個以上引數,考慮使用建造者模式建立物件。
為什麼使用建造者
當你要呼叫乙個類的建構函式時,你首先要決定使用哪乙個,然後裡面又是一堆引數,如果這些引數的型別很多又都一樣,你還要搞清楚這些引數的含義,很容易就傳混了
uml圖
實現
public
abstract
class
computer
public
abstract
void
setname()
;public
void
setmouse
(string mouse)
public
void
setkeyboard
(string keyboard)
@override
public string tostring()
';}}
public
class
maccomputer
extends
computer
}
public
abstract
class
builder
public
class
macbuilder
extends
builder
@override
void
buildkeyboard
(string keyboard)
@override
void
buildname()
@override
public computer build()
@override
public string tostring()
';}}
public
class
directer
public
void
construct
(string mouse, string keyboard)
public
static
void
main
(string[
] args)
}
總結
為了靈活構造複雜物件,該物件會有多個成員變數,在外部呼叫的時候,不需要或者不方便一次性建立出所有的成員變數,在這種情況下,使用多個構造方法去構建物件,很難維護,這時候builder設計模式解決這個問題,進行buid()方法中建立物件,並且將builder傳入,該builder中,維護了傳入物件的成員變數。
文章**
建造者簡單實現
建立型設計模式 建造者模式
建造者模式的結構 產品角色 抽象建造者 具體建造者 指揮者。相比抽象工廠模式,省掉了抽象產品,多了指揮者。產品class product 抽象建造者 abstract class builder 具體建造者 public class concretebuilder extends builder p...
設計模式 建立型 建造者模式
生產乙個遊戲玩家,遊戲玩家由臉 身體 腿 胳膊組成,組裝時有順序要求 from abc import abcmeta,abstractmethod 產品 class player def init self,face none body none arm none leg none self.fac...
建立型設計模式之建造者模式
建造者模式 主要用於將產品修飾的這部分內容抽象化,提供給外部乙個自由定製的修飾渠道,達到自由切換修飾規則但是不用修改舊 的效果。帶有抽象介面的建造者模式主要涉及的物件有 引導者 decorate 產品 抽象建造者介面 builder 定製化的builder。打個比方,我開著一輛拖拉機去石料場運載建築...