zoukankan      html  css  js  c++  java
  • 设计模式---单例模式总结

     单例设计模式

     定义:保证一个类只有一个实例,并提供一个全局的访问点

    应用实例 登录,用闭包作为缓存,判断当前的类是否存在,如果存在,就不会再重新创建,防止了再次创建,优化性能


    var createLoginDialog = (function () {
    var div;
    return function () {
    if (!div) {
    div = document.createElement('div');
    div.innerHTML = '登录悬浮框';
    var closeBtn = document.createElement('button');
    closeBtn.innerHTML = 'X';
    div.appendChild(closeBtn);
    closeBtn.onclick = function () {
    div.style.display = 'none';
    }
    document.body.appendChild(div);
    } else {
    div.style.display = 'block';
    }
    return div;
    }
    })();
    document.getElementById('loginBtn').onclick = function () {
    var loginDiv = createLoginDialog();
    }

     为了满足单例模式具有单一职原则 ,抽离出一个单例方法

    var createLoginDialog = function () {
    var div = document.createElement('div');
    div.innerHTML = '登录悬浮框';
    var closeBtn = document.createElement('button');
    closeBtn.innerHTML = 'X';
    div.appendChild(closeBtn);
    closeBtn.onclick = function () {
    div.style.display = 'none';
    }
    document.body.appendChild(div);
    return div;

    }

    var getSingleton = function (fn) {
    var result;
    return function () {
    return result || (result = fn.apply(this.arguments))
    }
    }

    var createSingletonLogin = getSingleton(createLoginDialog);

    document.getElementById('loginBtn').onclick = function () {
    var loginDiv = createSingletonLogin();
    loginDiv.style.display = 'block';
    }
  • 相关阅读:
    Ubuntu vim java 自动补全javacomeplete2
    vim多行注释和取消注释 Ubuntu
    vim tab设置为4个空格
    liunx 命令行快捷键 常用命令
    win7 +v Ubuntu 16.04 grub rescue 模式下修复 grub
    Ubuntu16.04安装WPS
    liunx ubuntu java 环境的配置
    Vim简明教程【CoolShell】(转)
    ubuntu16.04安装chrome
    android全屏下的输入框未跟随软键盘弹起问题
  • 原文地址:https://www.cnblogs.com/yayaxuping/p/9682967.html
Copyright © 2011-2022 走看看