那從例子開始,建造者模式就是要造東西嘛,造點啥呢?我腦海中曾經一頓掙扎,什麼,造汽車啊,大樓啊,電腦啊等等,後來發現還是簡單點造個人吧。這樣大家都好理解。讀者也可以理解造機械人。只要你喜歡。
那我們新建乙個人的類。
public class human
public void sethead(string head)
public string getbody()
public void setbody(string body)
public string gethand()
public void sethand(string hand)
public string getfoot()
public void setfoot(string foot)
}這個就是人的類了,我們取名為human。只要是人都是這個類出來的。
那我們想要造人的話,得有乙個標準吧? 來要造人的話得有乙個步驟吧?頭,身體,手,腳,那都得有。
所以我們先寫乙個介面。乙個定義了造人標準的介面。
public inte***ce ibuildhuman
看,乙個介面定義好了。有各種造部位的方法,最後給個createhuman方法給你返回乙個我們想要造的人。
現在,人的類和造人的標準我們都定義好了。那我們可以先造乙個人出來,先造乙個高智商的人吧。
public class smartmanbuilder implements ibuildhuman
@override
public void buildhead()
@override
public void buildbody()
@override
public void buildhand()
@override
public void buildfoot()
@override
public human createhuman()
}這個高智商的造人過程自然是實現了ibuildhuman這個造人標準的介面了。然後就是set方法,最後返回造好的human。
好的,其實到這裡呢,我們已經完成了建造的過程。那就這麼簡單的建造過程,還搞了乙個建造模式嗎?非也。接下來,就是介紹建造者模式的精髓,那就是director。這個director呢,就是來執行我們剛才的造人動作的。沒錯,精髓就是我們剛才的造人動作。我們先看**:
public class director
}這個director類呢,重點在於createhumanbydirecotr的引數是我們的造人標準的介面。這樣一來,只要是實現了我們的這個介面的類,就都可以作為引數,我們剛剛不是造了乙個高智商的人嗎?那我們如果想造乙個身體運動能力出色的人,也就是運動員,這個director也可以啟動這個造人過程,只要我們把這個運動員的類先寫好。我們來看看director是如何發揮的:
public class buildertest
}輸出結果為:
智商180的頭腦
新的身體
新的手新的腳
看,createhumanbydirecotr這個方法帶的引數就是我們高智商人的那個類。那我們想造乙個運動員,就可以像高智商人那樣建好類,然後傳進來就可以了!
java設計模式之建造者模式
概念 建造者模式是指把乙個複雜物件的構建和表示分離,就像建房子一樣,每乙個房子的建造流程都是相同的,但是卻會有很多形狀不一,樣式不同的房子,這裡的房子實際上就是房子這個物件的表示,建造的流程就是房子物件的構建 建造者模式的構成部分 1.builder介面 builder介面設計要表示物件的構建流程,...
Java設計模式之建造者模式
builder模式也叫建造者模式或者生成器模式,是由gof提出的23種設計模式中的一種。builder模式是一種物件建立型模式之一,用來隱藏復合物件的建立過程,它把復合物件的建立過程加以抽象,通過子類繼承和過載的方式,動 態地建立具有復合屬性的物件。具體的構建物件 房子 public class h...
JAVA設計模式之建造者模式
分離物件子元件,子元件單獨構造 由builder來負責 和裝配模式 由director負責 從而可以構造出複雜物件。這個模式適用於某個物件構造特別複雜。由於實現了構建和裝配的解耦。不同的構建器,相同的裝配,也可以生產不同的物件的物件 相同的構建器和不同的裝配順序也可以構造不同的物件,這樣實現了構建演...