码迷,mamicode.com
首页 > 编程语言 > 详细

常用的JavaScript设计模式(二)Factory(工厂)模式

时间:2018-06-12 22:58:07      阅读:196      评论:0      收藏:0      [点我收藏+]

标签: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(工厂)模式

标签:style   case   tor   cti   ase   white   console   func   yellow   

原文地址:https://www.cnblogs.com/dzwonline/p/9173180.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!