生成器模式 Builder

2021-04-01 16:38:15 字數 2838 閱讀 5162

把複雜的物件的構建與其表示分離開,以便根據程式的需要在相同的建立過程中建立不同的表示。每個生成器必須有乙個相同的方法名稱。

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...