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

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

// 全局工厂类
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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,930评论 25 708
  • iOS 属性修饰关键字都有哪些? atomic 原子性访问,对属性赋值的时候加锁 noatomic 非原子...
    AllenYukin阅读 266评论 0 0
  • 传说中,在九重天之上有一处太虚境,那里,住着一群神仙······ 我是一株仙草,住在太虚中,这里的神仙分为上仙和下...
    南橘爱北枳阅读 1,028评论 8 30