建造者模式擴充套件

2021-10-18 13:18:04 字數 1699 閱讀 9442

建造者模式除了上面的用途外,在開發中還有乙個常用的使用方式,就是當乙個類構造器需要傳入很多引數時,如果建立這個類的例項,**可讀性會非常差,而且很容易引入錯誤,此時就可以利用建造者模式進行重構。

public

class

phone

public string getcpu()

public

void

setcpu

(string cpu)

public string getscreen()

public

void

setscreen

(string screen)

public string getmemory()

public

void

setmemory

(string memory)

public string getmainboard()

public

void

setmainboard

(string mainboard)

@override

public string tostring()

';}}

public

class

client

}

上面在客戶端**中構建phone物件,傳遞了四個引數,如果引數更多呢?**的可讀性及使用的成本就是比較高。

public

class

phone

public

static

final

class

builder

public builder cpu

(string val)

public builder screen

(string val)

public builder memory

(string val)

public builder mainboard

(string val)

public phone build()

}@override

public string tostring()

';}}

public

class

client

}

測試結果

phone
重構後的**在使用起來更方便,某種程度上也可以提高開發效率。從軟體設計上,對程式設計師的要求比較高。

工廠方法模式注重的是整體物件的建立方式;而建造者模式注重的是部件構建的過程,意在通過一步一步地精確構造建立出乙個複雜的物件。

我們舉個簡單例子來說明兩者的差異,如要製造乙個超人,如果使用工廠方法模式,直接產生出來的就是乙個力大無窮、能夠飛翔、**外穿的超人;而如果使用建造者模式,則需要組裝手、頭、腳、軀幹等部分,然後再把**外穿,於是乙個超人就誕生了。

抽象工廠模式實現對產品家族的建立,乙個產品家族是這樣的一系列產品:具有不同分類維度的產品組合,採用抽象工廠模式則是不需要關心構建過程,只關心什麼產品由什麼工廠生產即可。

建造者模式則是要求按照指定的藍圖建造產品,它的主要目的是通過組裝零配件而產生乙個新產品。

如果將抽象工廠模式看成汽車配件生產工廠,生產乙個產品族的產品,那麼建造者模式就是乙個汽車組裝工廠,通過對部件的組裝可以返回一輛完整的汽車。

建造者模式的擴充套件

建造者模式除了上面的用途外,在開發中還有乙個常用的使用方式,就是當乙個類構造器需要傳入很多引數時,如果建立這個類的例項,可讀性會非常差,而且很容易引入錯誤,此時就可以利用建造者模式進行重構。重構前 如下 public class phone public string getcpu public v...

建造者模式

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

建造者模式

軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...