javascript设计模式之简单工厂模式

原创
2017/04/17 21:28
阅读数 13

关系对应图

首先,创建产品类A,代码如下:

function productA(){
    this.sum = 0
}
productA.prototype.create = function(sum){
    this.sum +=sum
    console.log("productA create: sum " + this.sum)
}

然后,创建产品类B,代码如下:

function productB(name){
    this.sum = 0
}
productB.prototype.create= function(sum){
    this.sum +=sum
    console.log("productB create: sum " + this.sum)
}

最后创建工厂,简单工厂模式中,最核心是工厂方法。提供静态方法,调用时提供参数,由它来根据参数分配不同的产品类,代码如下:

function factory(name){
    switch (name){
        case 'a':
            return new productA()
        break
        case 'b':
            return new productB()
        break
    }
}

调用工厂,获得产品类,代码如下:

var aFactory = factory("a")
var bFactory = factory("b")
aFactory.create(10) //打印 productA create: sum 10
bFactory.create(5) //打印 productB create: sum 5
aFactory.create(10) //打印 productA create: sum 20
bFactory.create(20) //打印 productB create: sum 25

由此可以看出,当你需要什么,只需要传入一个正确的参数,就可以获取你所需要的对象,而无须知道其创建细节。使用起来相当方便,而且降低了系统的耦合度,使不同产品类修改起来十分方便。

但也有缺点,所有产品类都集中在工厂方法中。一旦工厂出现问题,那么整个系统都会瘫痪了。

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部