【JS设计模式】单例模式

单例模式就如其名一样,一个构造函数在构造出一个对象后,之后再使用这个构造函数构造对象时,不会是新的对象,依旧是上一次的对象,通俗点说,单例模式实现的是一个构造函数只能创造一个新的对象。很不解,为什么要这么做?这个就像什么呢,举个不恰当的例子,就像一家汽车制造厂,在制造完一辆车之后,宣布不再造新车了,之后公司要改型,改成只针对这辆车做维护(维修)的公司。

【JS设计模式】单例模式_第1张图片

 

那么这么做的意义何在呢?横看竖看都感觉不划算... ...说实话,我也不知道啥用,教科书式的解释,大致就是说:

  • 创建完之后,只有一个实例,之后再怎么创建,都是这一个,方便实例管理,提供了对实例的受控访问。
  • 对于频繁创建,销毁对象,这个单例模式实现了对象统一,内存只占有一个对象内存分量,在频繁创建中,大大的节约了系统内存。

 从字面上看真的没感觉出能用在什么地方。不过换个角度想想,存在即合理,你想想,你写代码的时候,创建完一个对象后,之后又不小心多创建了功能大体一模一样的对象?(不会)好吧,那你想想,你写完一大串的代码给别人维护或者二次开发时,那个第三者会不会创建一个跟你那个功能大体一模一样的对象?(关我屁事,我的任务完成就行了)... ....怎么都像是强加解释啊,或许还有更高深的用法吧,我这种平庸之辈不能理解,我尊重每一个想法,在某些情况下,单例确实能保护代码和增加代码可维护性。不过对于我来说,它只是我用来练手的工具,接下来我们尝试实现一个单例模式吧。

【JS设计模式】单例模式_第2张图片

function Singledog(){  //创建了一个单身狗构造函数,然而全世界,只有我是单生狗
    var me = {name:"David", age:20}  //稍微介绍一下自己的身世
    Singledog = function () {   //创建完之后,直接把这个构造函数悄悄的重写了,利用闭包原理,偷偷的让全世界的单身狗变成我一个
        return me;
    }
    return me;
}

啥,你对我的代码不满意?= =我只是按照单例模式的定义写了一个,不能当真,仅供参考,ok?方法那么多,我尊重每个人的想法。

总结一下,单例模式的实现其实没什么难度,应用场景在我日常开发中(学生党,谈啥开发,学习去吧),还真不觉得有啥用。模式建议大家根据实际场景使用,而不是盲目跟风乱用,这样只会带来负效应。

你可能感兴趣的:(【JS设计模式】单例模式)