美文网首页我爱编程
js设计模式(创建型设计模式)-单例模式

js设计模式(创建型设计模式)-单例模式

作者: 烛林小煜 | 来源:发表于2018-03-29 10:36 被阅读25次

工作中其实我们经常用到,只不过一直不知道他怎么称呼。如今重新认识一下,单例模式又称单体模式,是只允许实例化一次的对象。


1.非单例模式

  通常,我们在写页面,比如活动页面,比如操作dom的时候会写一些公共的方法来方便我们自己使用,比如:

function addCss() {

        var addStyle = "@-webkit-keyframes fall{from{-webkit-transform:translateY(0)}to{-webkit-transform:translateY(" + (mH - 100) + "px)}}\

        @keyframes fall {from{transform:translateY(0)}to{transform:translateY(" + (mH - 100) + "px)}}";

        document.getElementsByTagName('style')[0].insertAdjacentHTML('beforeEnd', addStyle);

    }

    function r(min, max) {

        return ~~(Math.random() * (max - min) + min);

    }

    function $(id) {

        //缓存

        if (!window['_BC_' + id]) {

            window['_BC_' + id] = document.getElementById(id);

        }

        return window['_BC_' + id];

    }

2.单例模式

2.1 命名空间管理员

  其实单例模式我们也经常用到,比如你最熟悉的jquery,他就为我们提供了一个命名空间jquery。

  那么命名空间又是什么鬼?他就像人一样,每个人都有自己的空间,张三的空间就叫张三,李四的空间就叫李四,用名字来区别彼此。好比我们用jquery.animate()一样,是一个道理。这样我们就可以防止对象的重写,代码如下

var redpack = {

addClass:function(){},

$:function(){},

r:function(){}

}

2.2 模块分明

  单例模式中,我们可以更清晰的定义模块,方便代码的维护和扩展。好比tangram中的代码

baidu.dom.addClass  //添加元素类

baidu.dom.append

baidu.event.stopPropagation

2.3 创建小型代码库

2.4 无法修改的静态变量static

首先,js是不存在static的,但我们可以通过灵活的方式创建。我们只需要将变量定义在方法中,而不提供修改它的方法就可以了

var dl = (function() {

        var cfg = {

                a: 1,

                b: 2

            },

            return {

                get: function(param) {

                    return cfg[param] ? cfg[param] : '不存在';

                }

            }

    })()

2.5 惰性单例

单例模式还有一种延迟创建方式,称为惰性创建。代码如下

var dl = (function() {

        var instance = null;

        function contain() {

            return {

                a: 1,

                b: 2

            }

        };

        return {

            get: function() {

                if (!instance) {

                    var test = contain();

                }

                return test

            }

        }

    })()

惰性单例模式,可以节省初始加载时的开销,在需要的时候调用。

相关文章

  • 单例模式

    单例 单例模式,是一种设计模式,属于创建型设计模式,还有一种创建型设计模式,工厂模式。设计模式总共有23种,三大类...

  • 设计模式分类

    经典23种设计模式: 创建型设计模式: Singleton Pattern(单例模式) PrototypePatt...

  • 开发之设计模式-单例模式

    设计模式 设计模式分为三大类:创建型、结构型、行为型在Java中有24中设计模式 创建型:单例 1、为什么用单例模...

  • Python 之单例模式

    简介:单例模式(Singleton Pattern) 是最简单的设计模式之一,属于创建型的设计模式。单例模式涉及到...

  • 前端设计模式

    JS设计模式一:工厂模式jS设计模式二:单例模式JS设计模式三:模块模式JS设计模式四:代理模式JS设计模式五:职...

  • “Python的单例模式有四种写法,你知道么?”——孔乙己

    什么是单例模式 单例模式(Singleton Pattern)是最简单的设计模式之一。这种类型的设计模式属于创建型...

  • 设计模式简单总结(待完善)

    设计模式简单总结 设计模式可以分为:创建型,结构型,行为型三种模式。 1 创建型模式 1.1 单例模式 用来指定某...

  • Android设计模式-模版方法模式

    UML关系简单介绍UML简单使用的介绍创建型设计模式Android设计模式-单例模式Android设计模式-工厂模...

  • Android设计模式-迭代器模式

    UML关系简单介绍UML简单使用的介绍创建型设计模式Android设计模式-单例模式Android设计模式-工厂模...

  • Android设计模式-享元模式

    UML关系简单介绍UML简单使用的介绍创建型设计模式Android设计模式-单例模式Android设计模式-工厂模...

网友评论

    本文标题:js设计模式(创建型设计模式)-单例模式

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