設計模式 建立型 建造者模式

2021-10-21 02:23:44 字數 1605 閱讀 7381

定義

將乙個複雜的物件的構建與它的表示分離,是的同樣的構建過程可以建立不同的表示。

場景初始化乙個物件特別複雜,如使用多個構造方法,或者說有很多引數,並且都有預設值時。

一般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。打個比方,我開著一輛拖拉機去石料場運載建築...