建造者模式,是將乙個構建過程複雜的物件的構建過程和物件的表示分離,該模式主要關注的是構建過程。
假設建造房子,無論是搭個茅草屋還是建造宮殿都需要打地基、建造牆壁,修建屋頂這幾個步驟,**如下
//產品類
public
class
house
// 抽象建造者
public
abstract
class
housebuilder
}// 具體的建造類1 (茅草屋)
public
class
bandahousebuilder
extends
housebuilder
@override
public
void
buildwalls()
@override
public
void
roofed()
}// 具體建造者2 (建造宮殿)
public
class
palacehousebuilder
extends
housebuilder
@override
public
void
buildwalls()
@override
public
void
roofed()
}// 指揮者
public
class
housedirector
public house construct()
}
public
class
computer
// 建造者模式
private
computer
(builder builder)
// statis修飾目的:不需要初始化內部類
// final修飾目的:不允許被繼承,builder是乙個不可變類
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 computer build()
}}// 客戶端呼叫
// 常規方式
computer compter =
newcomputer
("cpu"
,"screen"
,"memory"
,"mainboard");
// 建造者模式,比構造方法和set方法更為優雅
computer compterbuilder =
newcomputer.builder()
.cpu
("cpu").
screen
("screen").
memory
("memory").
mainboard
("mainboard").
build()
;
一篇文章就徹底弄懂建造者模式 設計模式 6 建造者模式
建造則模式 將乙個複雜的物件的構建與它的表示分離,是的同樣的構建過程可以建立不同的表示。我要組裝一台電腦,電腦被抽象為computer類,它有三個部件 cpu 主機板和記憶體。並在裡面提供了三個方法分別用來設定cpu 主機板和記憶體 產品類 一般是乙個較為複雜的物件,也就是說建立物件的過程比較複雜,...
學習設計模式(6) 建造者模式
1.介紹 這個模式,非常有用。有時候,你的乙個類,有許多函式功能,你又不希望在這個類裡面再增加乙個管理函式呼叫的介面,但你又不希望用全域性變數來操作這批函式,怎麼辦?你還可以用建造者模式。2.具體使用說明 最經典的例子,莫過於 effective c 條款23,寧以non member,non fr...
設計模式C 實現(6) 建造者模式
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...