標籤:style case tor cti ase white console func yellow
Factory通過提供一個通用的介面來建立對象,同時,我們還可以指定我們想要建立的對象執行個體的類型。
假設現在有一個汽車工廠VehicleFactory,支援建立Car和Truck類型的對象執行個體,現在需要通過這個工廠建立指定類型的對象,那麼我們不需要通過直接使用new運算子或者通過其他的創造型建構函式來建立這個指定的對象,我們只需要通知VehicleFactory我們需要什麼類型的對象執行個體,然後VehicleFactory會返回我們所需要的類型的對象執行個體。
代碼實現:
//Car和Trunk的建構函式function Car(options){ this.doors=options.doors||4; this.state=options.state||"brand new"; this.color=options.color||"black";}function Trunk(options){ this.wheelSize=options.wheelSize||‘large‘; this.color=options.color||"yellow"; this.state=options.state||"brand new";}//定義VehicleFactory工廠function VehicleFactory(){}//定義工廠建立執行個體的方法VehicleFactory.prototype.createVehicle=function (options){ switch(options.vehicleType) { case "car":this.vehicleClass=Car;break; case "trunk":this.vehicleClass=Trunk;break; } return new this.vehicleClass(options);};//建立產生汽車的工廠執行個體let carFactory=new VehicleFactory();let car1=carFactory.createVehicle({ vehicleType:"car", color:"white", doors:6});console.log(car1);//{doors:6,state:"brand new",color:"white"}
常用的JavaScript設計模式(二)Factory(工廠)模式