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"}
原文地址:https://www.cnblogs.com/dzwonline/p/9173180.html
时间: 2024-11-18 09:44:42