大雷说单例

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

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

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

如今一块儿来创造惟一的老婆吧
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";
}get

相关文章
相关标签/搜索