1. 程式人生 > >常用的JavaScript設計模式(二)Factory(工廠)模式

常用的JavaScript設計模式(二)Factory(工廠)模式

asc 我們 對象實例 actor 通過 汽車 對象 UNC cti

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(工廠)模式