把複雜的物件的構建與其表示分離開,以便根據程式的需要在相同的建立過程中建立不同的表示。每個生成器必須有乙個相同的方法名稱。
client
建立乙個
director
物件,指定乙個
build
物件,配置
director。當
product
需要生成時,
director
通知該builder
。builder
處理通知,建立
product
。client
從builder
得到product
。
builder
(vehiclebuilder
)指定乙個介面用來建立
product
物件。concretebuilder
(motocyclebuilde
,carbuilder
,scooterbuilder)實現
builder
介面,建立
product
或組裝product
的部件。
提供返回
product
介面。director
(shop)使用
builder
介面建立物件
product
(vehicle
)需要被建立的複雜物件。
**://director
public class shop
}//builder
public abstract class vehiclebuilder
//methods
abstract public void buildframe();
abstract public void buildengine();
abstract public void buildwheels();
abstract public void builddoors();
}//concretebuilder
public class motorcyclebuilder extends vehiclebuilder
public void buildengine()
public void buildwheels()
public void builddoors()
}public class carbuilder extends vehiclebuilder
public void buildengine()
public void buildwheels()
public void builddoors()
}public class scooterbuilder extends vehiclebuilder
public void buildengine()
public void buildwheels()
public void builddoors()
}//product
public class vechicle
public void setframe(string frame)
public void setengine (string engine)
public void setwheels (string wheels)
public void setdoors (string doors)
public void show()
public static void main(string args){
shop shop=new shop();
vehiclebuilder b1=new scooterbuilder();
vehiclebuilder b2=new carbuilder();
vehiclebuilder b3=new motorcyclebuilder();
shop.construct(b1);
b1.getvehicle.show();
shop.construct(b2);
b2.getvehicle.show();
shop.construct(b3);
b3.getvehicle.show();
output
---------------------------
vehicle type: scooter
frame : scooter frame
engine : none
#wheels: 2
#doors : 0
---------------------------
vehicle type: car
frame : car frame
engine : 2500 cc
#wheels: 4
#doors : 4
---------------------------
vehicle type: motorcycle
frame : motorcycle frame
engine : 500 cc
#wheels: 2
#doors : 0
生成器模式 (Builder)
gof意圖 將乙個複雜物件的構建 director 與它的表示 builder 分離,使得同樣的構建過程 director定義的 可以建立不同的表示 builder在組裝的 構建與表示分離 角色 1 builder 為建造者,提供建造part的介面buildpart 建造產品的一部分,獲得建造結果的...
設計模式 生成器(Builder)
目的 在軟體開發的過程中不可避免地會碰到一些複雜的物件。如果直接去建立這些複雜的物件,會使 變得難於理解和維護,而且對於大多數使用者而言他們並不關心物件各個成員的建立過程。builder的作用就是將物件各個成員的建立和組裝過程分離,根據使用者的需求一步一步建立複雜的物件。使用者只需要指定型別就可以得...
建立型模式 生成器 builder
將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示.main.cc design patterns builder in the production of mobile phones,for example,now the mobile phone manufacturers...