網路上有人將它定義為:將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的物件。
所以建造者模式適合於乙個具有較多的零件(屬性)的產品(物件)的建立過程。
由五個部分構成:
1. product:concreatebuilder建立該產品的內部表示並定義它的裝配過程。
2. builder介面:抽象介面,定義建立product物件內部各個元件的操作
3. concretebuilder:實現builder的介面,以構造和裝配該產品的各個部件。定義並明確它所建立的表示,同時提供乙個返回product的介面
4. director:構造乙個使用builder介面的物件
舉個具體的例子吧:
現在我們需要生產一台電腦,有cpu,硬碟,記憶體,顯示卡,音效卡(只是用來舉例),我們可以這樣寫:
public
class computer
public
void
setmharddisk(harddisk mharddisk)
public cpu getmcpu()
public
void
setmcpu(cpu mcpu)
public memory getmmemory()
public
void
setmmemory(memory mmemory)
public graphics getmgraphics()
public
void
setmgraphics(graphics mgraphics)
public soundcard getmsoundcard()
public
void
setmsoundcard(soundcard msoundcard)
}
public
inte***ce builder
public
class
computerbuilder
implements
builder
@override
public
void
createharddisk()
@override
public
void
creatememory()
@override
public
void
creategraphics()
@override
public
void
createsoundcard()
@override
public computer getcomputer()
}
public
class director
public
void
createcomputer()
public computer getcomputer()
}
這種方式有乙個缺點就是可能引入多個過載建構函式以及setters過度使用導致不必要的複雜性
public
class
computer
public harddisk getmharddisk()
public cpu getmcpu()
public memory getmmemory()
public graphics getmgraphics()
public soundcard getmsoundcard()
public
static
class
computerbuilder
public computerbuilder graphics(graphics graphics)
public computerbuilder soundcard(soundcard soundcard)
public computer build()
}}
使用方法:
public computer createcomputer()
用這種方式方式看起來會非常直觀,另外對話方塊alertdialog也是用的這種形式 設計模式 Builder模式
bulder模式是一步步建立乙個複雜物件的建立模型,它允許使用者在不知道內部構建細節 的情況下可以更精細地控制物件的構造流程該模式為將構建複雜物件的過程和它的部件 解耦,使得構建過程和部件的表示隔離開來。將乙個負責物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示 3.1 相同的方法,不...
設計模式 Builder模式
一貫風格,直接上 package created by mingchenchen on 2017 6 14.public class user public void setid string id public string getcountry public void setcountry st...
設計模式 Builder模式
public class person public void setname string name public intgetage public void setage int age public double getheight public void setheight double h...