资讯专栏INFORMATION COLUMN

Javascript设计模式(二)工厂模式

anonymoussf / 2161人阅读

摘要:所谓的工厂模式,顾名思义就是成批量地生产模式。工厂方法将类的实例化延迟到子类首先是创建构造函数,区别物种的不同属性。工厂模式适用于以下场景实例对象较复杂。设计模式更代表的是一种系统思想,而不是重复的代码堆砌。

所谓的工厂模式,顾名思义就是成批量地生产模式。它的核心作用也是和现实中的工厂一样利用重复的代码最大化地产生效益。在javascript中,它常常用来生产许许多多相同的实例对象,在代码上做到最大的利用。工厂模式定义创建对象的接口,但是让子类决定实例化哪个类。工厂方法将类的实例化延迟到子类

首先是创建构造函数,区别物种的不同属性。

//定义人的构造函数
var man = function(o) {
    this.foots = o.foot || 2;
    this.legs = o.legs || 2;
}

//定义鱼的构造函数
var fish = function(o) {
    this.qi = o.qi || 4;
    this.foots = o.foots || 9;
}

//定义外星人的构造函数
var et = function(o) {
    this.legs = o.legs ||10;
    this.eyes = o.eyes || 6;
}

接下来我们再创建一个工厂的构造函数:

//工厂函数的构造函数
var F = function() {}

接着在原型上设置它的默认方法:

//f的默认输出实例函数;
F.prototype.vehicleClass = man;

此时,该工厂函数默认生产的是man的实例,在不配置的情况下我们产生的是人类的实例,然后我们对vehicleClass这个函数进行扩充,生成一个新的函数,此函数可以对不同的类别进行甄别,

//类的甄别函数
F.prototype.vehicleCreate = function(o) {
    switch(o.vehicleType) {
        case "man" :
            this.vehicleClass = man;
            break;
        case "fish" :
            this.vehicleClass = fish;
            break;
        case "et" :
            this.vehicleClass = et;
            break;
        }
    //返回实例
    return this.vehicleClass(o);
}

通过swith语句的索引,可以通过vehicleType进行不同类的实例化。那么我们看看这个类是如何工作的。首先时实例工厂类.

var Factory = new F();

然后调用vehicleCreate方法,通过传参获取不同实例的对象。

var Man = Factory.vehicleCreate({
    vehicleType : "man",
    legs : 2,
    foots : 2
});

这样,通过vehicleType的值,我们可以告诉工厂类我们希望输出的物种,然后通过其他的属性,我们可以控制该物种实例的各种基础属性。

工厂模式适用于以下场景:

实例对象较复杂。

多对象的简单,快速的实现。

跟享元模类似,适用于拥有共同属性的对象。

只需要满足一个API契约的其他对象的实例对象。

工厂模式实现起来较为简单,不仅仅是工厂模式,几乎所有模式的代码看起来都比较简单。设计模式其实就是把经常用到的代码归纳总结系统的表达而已。在之后的应用中,我们可以系统地去想到这些模式并且运用它们。设计模式更代表的是一种系统思想,而不是重复的代码堆砌。

引用链接

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/99144.html

相关文章

  • 从ES6重新认识JavaScript设计模式(): 工厂模式

    摘要:简单工厂模式简单工厂模式又叫静态工厂模式,由一个工厂对象决定创建某一种产品对象类的实例。工厂方法模式工厂方法模式的本意是将实际创建对象的工作推迟到子类中,这样核心类就变成了抽象类。抽象工厂模式一般用在 1 什么是工厂模式? 工厂模式是用来创建对象的一种最常用的设计模式。我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。工厂模式根据抽象程度的不...

    Reducto 评论0 收藏0
  • 从ES6重新认识JavaScript设计模式(): 工厂模式

    摘要:简单工厂模式简单工厂模式又叫静态工厂模式,由一个工厂对象决定创建某一种产品对象类的实例。工厂方法模式工厂方法模式的本意是将实际创建对象的工作推迟到子类中,这样核心类就变成了抽象类。抽象工厂模式一般用在 1 什么是工厂模式? 工厂模式是用来创建对象的一种最常用的设计模式。我们不暴露创建对象的具体逻辑,而是将将逻辑封装在一个函数中,那么这个函数就可以被视为一个工厂。工厂模式根据抽象程度的不...

    szysky 评论0 收藏0
  • JavaScript设计模式- 简单工厂模式

    摘要:简单工厂模式又叫静态工厂方法模式,由一个工厂对象决定创建某一种产品对象类的实例。主要用来创建同一类对象。场景一比如体育商店卖体育器材,里面有很多体育用品,及相关介绍,当我们想买一个篮球及相关介绍时,只需要温售货员,他会帮你找到所有的东西。 简单工厂模式又叫静态工厂方法模式,由一个工厂对象决定创建某一种产品对象类的实例。主要用来创建同一类对象。场景一:比如体育商店卖体育器材,里面有很多体...

    Loong_T 评论0 收藏0
  • 细谈JavaScript中的一些设计模式

    摘要:注意事项声明函数时候处理业务逻辑区分和单例的区别,配合单例实现初始化构造函数大写字母开头推荐注意的成本。简单工厂模式使用一个类通常为单体来生成实例。 @(书籍阅读)[JavaScript, 设计模式] 常见设计模式 一直对设计模式不太懂,花了一下午加一晚上的时间,好好的看了看各种设计模式,并总结了一下。 设计模式简介 设计模式概念解读 设计模式的发展与在JavaScript中的应用 ...

    30e8336b8229 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<