zoukankan      html  css  js  c++  java
  • javascript 设计模式1----单例模式

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

    就是收:当我们 var a = new a(); var a1 = new a()是;a与a1是相等的。怎么实现呢,就是第一次实例化。第二不在实例,只是返回第一次的实例化:

    附上通用的惰性单例思路:

    Singleton.getInstance = (function () {
        var instance = null;
        return function (name) {
            if( !instance){
                instance = new Singleton(name);
            }
            return instance;
        }
    })()
    

      一个书上的登录框的例子:

    var createLoginLayer = (function () {
        var div;
        return function () {
            if(!div){
                div = document.createElement('div');
                div.innerHTML = '我是登录';
                div.style.display = 'none';
                document.body.appendChild(div);
            }
            return div;
        }
    })()
    
        document.getElementById('div1').onclick = function () {
            var loginLayer = createLoginLayer();
            loginLayer.style.display = 'block';
        }

    通用的惰性单例:

    var getSingle = function (fn) {
        var result;
        return function () {
            return result || (result = fn.apply( this,arguments));
        }
    }
    var createLoginLayer = function () {
        var div = document.createElement('div');
        div.innerHTML = 'WOSHI DENGLU';
        div.style.display = 'none';
        document.body.appendChild(div);
        return div;
    }
    
    var createSingleLoginLayer = getSingle(createLoginLayer);
    
        document.getElementById('div1').onclick = function () {
            var loginLayer = createSingleLoginLayer();
            loginLayer.style.display = 'block';
        }
        //在创建一个唯一的iframe
    
        var createSingleframe = getSingle(function () {
            var iframe = document.createElement('iframe');
            document.body.appendChild(iframe);
            return iframe;
        })
    
        document.getElementById('div1').onclick = function () {
            var loginLayer = createSingleframe();
            loginLayer.src = 'http://baidu.com'
        }
  • 相关阅读:
    Firemonkey绑定对象列表
    Firemonkey 自定义Button的Style
    Delphi中使用GDI+进行绘图(2)
    Delphi中使用GDI+进行绘图(1)
    很好用的一个类:TJvAppXMLFileStorage
    我的Win32开发抉择,Delphi老将复出
    实现动态的XML文件读写操作
    一个简单的统计图像主颜色的算法(C#源代码)
    开始使用THREE.JS
    C++应用程序在Windows下的编译、链接(一)概述
  • 原文地址:https://www.cnblogs.com/chenjinxinlove/p/5866762.html
Copyright © 2011-2022 走看看