JavaScript创建型设计模式---简单工厂模式

参考书籍:JavaScript设计模式
简单工厂模式(传入参数,获取对象)
当你需要什么的时候,只要传入正确的参数,就可以获取你所需要的对象,而无需知道你创建的细节。他有两种创建对象的方式,一种是通过类实例化对象创建,另一种是先创建一个新的对象然后包装增强其属性和方法来实现。通过类创建的对象,如果这些类继承同一个父类,那么他们父类上的原型上的方法是可以共用的。而通过增加属性和方法的方式更像寄生式,这些创建的对象都是一个新的个体,所以他们的方法不能共用。

通过类实例化创建的对象,举个例子,比如说在体育商店买体育器材,里面有很多种类,以及他们相关的介绍等。当你需要一个篮球及其介绍时,你只要问售货员,他就会帮你找到你所需要的东西。

//篮球基类
var Basketball = function () {
    this.intro = "basktball";
}
Basketball.prototype = {
    getMember: function () {
        console.log("5 people")
    },
    getBallSize: function () {
        console.log('big')
    }
}
//足球基类
var Football = function () {
    this.intro = "football";
}
Football.prototype = {
    getMember: function () {
        console.log("11 people");
    },
    getBallSize: function () {
        console.log("small")
    }
}
//网球基类
var Tennis = function () {
    this.intro = "tennis"
}
Tennis.prototype = {
    getMember: function () {
        console.log("1 people");
    },
    getBallSize: function () {
        console.log("big")
    }
}
//工厂
var sportsFactory = function (name) {
    switch (name) {
        case 'NBA':
            return new Basketball();
        case 'wordCup':
            return new Football();
        case 'FrenchOpen':
            return new Tennis();
        default:
            return new Basketball();

    }
}

测试


    var football = sportsFactory('wordCup');
    console.log(football);
    var basktball = sportsFactory('NBA');
    console.log(basktball);

在上面的例子中,3个基类的结构是相似的,都有一个属性,2个方法,所以我们可以提取共同方法。因此简单工厂模式还可以用来创建相似的对象,对于不相似的地方针对性处理,也就是简单工厂模式另一种实现方式

function sportsFactory(intro) {
    //创建一个对象,并且拓展其属性和方法
    var o = new Object();
    o.intro = intro;
    o.getBallSize = function () {
        console.log("getBallSize: "+intro);
    }
    //将对象返回
    return o;

}

测试

    var football = sportsFactory('football');
    console.log(football);
    football.getBallSize();
    var basktball = sportsFactory('basktball');
    console.log(basktball);
    basktball.getBallSize();
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值