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';
            };
        })()
  • 相关阅读:
    tuple 元组及字典dict
    day 49 css属性补充浮动 属性定位 抽屉作业
    day48 选择器(基本、层级 、属性) css属性
    day47 列表 表单 css初识
    day 46 http和html
    day 45索引
    day 44 练习题讲解 多表查询
    day 40 多表查询 子查询
    day39 表之间的关联关系、 补充 表操作总结 where 、group by、
    day38 数据类型 约束条件
  • 原文地址:https://www.cnblogs.com/gaosirs/p/10736483.html
Copyright © 2011-2022 走看看