zoukankan      html  css  js  c++  java
  • JS 设计模式二 -- 单例模式

    单例模式

    概念

    单例模式 就是保证一个类只有一个实例,并提供一个访问它的全局访问点。

    实现方法

    先判断实例是否存在,如果存在直接返回,如果不存在就创建实例后在返回,确保了一个类只有一个实例对象。

        var Singleton = function(name) {
            this.name = name;
        };
    
        Singleton.prototype.getName = function() {
            console.log(this.name);
        };
        // 封装获取单例函数
        var getSingleton = function (fn) {
            var result;
            return function () {
                return result || (result = fn.apply(this, arguments));
            }
        }
      
       var createSingle = getSingleton(function(params){
           var single  = new Singleton(params)
           return single;  
       })
       
       createSingle("GaoSir").getName(); // GaoSir
       createSingle("张三").getName(); // GaoSir
        !(function() {
            //管理单例的逻辑代码,如果没有数据则创建,有数据则返回
            var getSingle = function(fn) { //参数为创建对象的方法
                var result;
                return function() { //判断是Null或赋值
                    return result || (result = fn.apply(this, arguments));
                };
            };
            //创建登录窗口方法
            var createLoginLayer = function() {
                var div = document.createElement('div');
                div.innerHTML = '我是登录浮窗';
                div.className = "login";
                div.style.display = 'none';
                document.body.appendChild(div);
                return div;
            };
            //单例方法
            var createSingleLoginLayer = getSingle(createLoginLayer);
    
            //使用惰性单例,进行创建
            document.getElementById('BtnShow').onclick = function() {
                var loginLayer = createSingleLoginLayer();
                loginLayer.style.display = 'block';
            };
    
            document.getElementById('BtnHide').onclick = function() {
                var loginLayer = createSingleLoginLayer();
                loginLayer.style.display = 'none';
            };
        })()
  • 相关阅读:
    英语口语练习系列-C15-心情不好
    英语口语练习系列-C14-常用片语
    英语口语练习系列-C13-聚会
    英语口语练习系列-C12-不了解
    英语口语练习系列-C11-了解
    Python3基础-分数运算
    英语口语练习系列-C10-up and down
    Python3基础系列-程序模板及代码本质
    英语口语练习系列-C09-常用动词
    英语口语练习系列-C08-考试
  • 原文地址:https://www.cnblogs.com/gaosirs/p/10736483.html
Copyright © 2011-2022 走看看