zoukankan      html  css  js  c++  java
  • 大雷说单例

    大雷说单例:
    单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点.
    看起来真的不好理解 不仅要知道何为类 何为实例 何为访问点.

    简单点说:类就是一个女朋友 实例就是把女朋友变成老婆 能够访问老婆的就只能是老公
    婚姻法规定:在中国一男人只能拥有一个老婆 也只有老公能够喊老婆 这就是单例 同时拥有两个老婆叫做重婚 就不符合单例的设计模式!!!!!!

    那如何来实例一个老婆呢?

    现在一起来创造唯一的老婆吧
    var createWife = (function () {
    var wife;
    return function () {
    if (!wife) {
    wife = document.createElement("div");
    wife.innerHTML = "世界上最漂亮的老婆";
    wife.style.display = "none";
    document.body.appendChild(wife);
    }
    return wife;
    }
    })();
    上面这个函数 在页面加载完成以后就是自动执行 返回一个wife对象
    然后每次去构建老婆的时候 就会检查老婆是否存在 如果存在就不能继续创造只能使用以前的老婆
    document.getElementById("btn").onclick = function () {
    var wife = createWife();
    wife.style.display = "block";
    }
    最后每次去调用该函数产生的老婆就是唯一的 页面也不会重复的去动态生成div 只会使用以前的div 老婆也就保证了唯一性;

    上面的例子能够保证创造老婆的唯一性 但是生活生成中唯一的东西太多了 如何让产生老婆这种事情多样化 这个多样化不是多个老婆 而是唯一的事物 比如: 唯一的老妈 唯一的老爸 唯一的女朋友(说甜言蜜语用) 唯一的对话框
    看代码的世界如何创造多样的唯一
    下面的两个方法创造了唯一的夫人和唯一的母后
    var createWife = function () {
    var wife = document.createElement("div");
    wife.innerHTML = "世界最好的老婆是艳艳熊";
    wife.style.display = "none";
    document.body.appendChild(wife);
    return wife
    }
    var createMom = function () {
    var mom = document.createElement("div");
    mom.innerHTML = "世界上最好的老妈是香香姐";
    mom.style.display = "none";
    document.body.appendChild(mom);
    return mom;
    }
    然后在专门做唯一事情的函数
    var getSingle = function (fn) {
    var obj;
    return function () {
    return obj || (obj = fn());
    }
    }
    最后通过函数专门来实现唯一的事情 实现美满家庭
    var wifeSingle = getSingle(createWife);
    var monSingle = getSingle(createMom);

    document.getElementById("btn").onclick = function () {
    var wife = wifeSingle();
    wife.style.display = "block";
    var mon = monSingle();
    mon.style.display = "block";
    }

  • 相关阅读:
    jQuery.getJSON的缓存问题的解决办法
    MFC Tab Control控件的详细使用
    JavaScript 闭包深入理解(closure)
    STL中sort函数用法简介
    STL中qsort的七种用法
    学习Javascript闭包(Closure)
    使用 Visual Studio 分析器找出应用程序瓶颈
    各种语言性能测试工具一览表
    Javascript 链式作用域
    MessageBox、::MessageBox 、AfxMessageBox三者的区别 .
  • 原文地址:https://www.cnblogs.com/leidc/p/7930270.html
Copyright © 2011-2022 走看看