美文网首页
js下工厂模式创建对象小解

js下工厂模式创建对象小解

作者: dotdiw | 来源:发表于2017-11-20 20:23 被阅读29次

好久没写东西了,小小的懒,慢慢的学,早就想介绍一下工厂模式了,尽管经常用,但今天才算细节的理解一下,愿意我们一起学习一起努力!

// 全局工厂类
var ObjectFactory = function () {
    var me = this;
    // 对象类数组
    me._objects = [];
    // 定义对象
    me.define = function (name, cfg) {
        me._objects[name] = cfg;
    }
    // 创建对象
    me.create = function (name, params) {
        if (!me._objects[name]) {
            return null;
        }
        // 如果是函数
        if(me._objects[name] instanceof Function) {
            return new me._objects[name](params);
        }
        // 如果是对象
        return me._objects[name];
    }
}

上面是工厂的创建,下面我们来创建对象

// 应用
// 创建对象工厂
var ObjBase = new ObjectFactory();
// 定义一个对象
ObjBase.define('start', {
    time: '8:00',
    startWork: function () {
        console.log('start work at 8am')
    }
})
// 创建一个start对象
var start = ObjBase.create('start');
console.log(start.time)  //---8:00

// 定义一个对象参数是函数
ObjBase.define('end', function (params) {
    var me = this;
    me.time = params.time || '18:00';
    me.endWork = params.endWork || function () {
        console.log('end work!')
    }
})
// 创建end对象
var end = ObjBase.create('end',{time:'19:00'})
console.log(end.time) // ---19:00

相关文章

  • js下工厂模式创建对象小解

    好久没写东西了,小小的懒,慢慢的学,早就想介绍一下工厂模式了,尽管经常用,但今天才算细节的理解一下,愿意我们一起学...

  • js 中的创建对象的几种方式

    JS中创建对象的主要模式有 工厂模式 工厂模式抽象了具体创建对象的过程例如 函数createPerson()能够根...

  • 2020-12-15

    js对象的创建和函数 创建对象 工厂模式 构造函数 原型方式+构造函数

  • js面向对象

    js面向对象 方法一:工厂模式 所谓工厂模式,简单点儿说就是按照工厂生产的过程创建对象,原材料->加工->返还产品...

  • 设计模式 -- 工厂模式

    设计模式 -- 工厂模式 工厂模式 1. 什么是工厂模式 工厂模式属于创建对象的模式。将对象的创建交给工厂进行,这...

  • javascript面向对象与原型

    昨天我们讲了在面向对象中创建对象的几种方式 工厂模式 构造函数模式 工厂模式创建的对象,像工厂一样来创建对象,创建...

  • JS创建对象的几种模式

    JS创建对象的几种模式及分析对比 工厂模式 实例化: 缺点:没有解决对象的识别问题. 构造函数模式 通过对比工厂模...

  • 设计模式之工厂模式(一)

    介绍工厂模式 工厂模式创建对象(视为工厂里的产品)时无需指定创建对象的具体类。 工厂模式定义一个用于创建对象的接口...

  • js创建对象及工厂模式

    单体创建对象 工厂模式创建对象

  • 单体创建对象、工厂模式创建对象

    单体创建对象 工厂模式创建对象

网友评论

      本文标题:js下工厂模式创建对象小解

      本文链接:https://www.haomeiwen.com/subject/zvhtvxtx.html