美文网首页
单例模式

单例模式

作者: 星月西 | 来源:发表于2017-05-02 21:35 被阅读31次

1.核心

单例模式的核心是确保只有一个实例,并提供全局访问。
因此,一个全局变量就可以当成一个单例模式来使用,但是这样容易污染全局空间,可以通过使用命名空间和使用闭包来封装私有变量来减少污染。

//使用立即执行函数和闭包创建出私有变量
    var user=(function(){
        var name='jc';
        return {
            print: function(){
                console.log(name);
            }
        };
    })();
    user.print();

2.惰性单例

惰性单例是指在需要的时候才创建对象实例,例如,页面上的一个单例元素,可以在使用的时候才去创建它,而不是页面加载好的时候就去创建它,或者还可以用无限滚动的思想。

//使用闭包实现私有变量表示单例是否被创建
    var createLoginLayer=(function(){
        var div;
        return function(){
            if(!div){
                div=document.createElement('div');
                document.body.appendChild(div);
            }
            return div;
        }
    })();
    var login=createLoginLayer();

但是这种实现方式上,违反了单一职责原则,应该将创建一个对象和单例模式分开来实现,有利于代码的复用。因此,需要将不变的单例模式代码抽取出来。

/**
     * 创建一个获取单例的函数,传入的fn为创建对象的方法
     */
    function getInstance(fn){
        var res;
        return function(){
            if(!res){
                res=fn();
            }
            return res;
        }
    }

这个实现单例模式的函数,还可以用来使一个有返回值的函数仅执行一次,可以用来保证仅加载一次数据。

相关文章

  • 【设计模式】单例模式

    单例模式 常用单例模式: 懒汉单例模式: 静态内部类单例模式: Android Application 中使用单例模式:

  • Android设计模式总结

    单例模式:饿汉单例模式://饿汉单例模式 懒汉单例模式: Double CheckLock(DCL)实现单例 Bu...

  • 2018-04-08php实战设计模式

    一、单例模式 单例模式是最经典的设计模式之一,到底什么是单例?单例模式适用场景是什么?单例模式如何设计?php中单...

  • 设计模式之单例模式详解

    设计模式之单例模式详解 单例模式写法大全,也许有你不知道的写法 导航 引言 什么是单例? 单例模式作用 单例模式的...

  • Telegram开源项目之单例模式

    NotificationCenter的单例模式 NotificationCenter的单例模式分析 这种单例模式是...

  • 单例模式Java篇

    单例设计模式- 饿汉式 单例设计模式 - 懒汉式 单例设计模式 - 懒汉式 - 多线程并发 单例设计模式 - 懒汉...

  • IOS单例模式的底层原理

    单例介绍 本文源码下载地址 1.什么是单例 说到单例首先要提到单例模式,因为单例模式是单例存在的目的 单例模式是一...

  • 单例

    iOS单例模式iOS之单例模式初探iOS单例详解

  • 单例模式

    单例模式1 单例模式2

  • java的单例模式

    饿汉单例模式 懒汉单例模式

网友评论

      本文标题:单例模式

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