JavaScript设计模式——单例模式
来源:互联网 发布:好用的自动铅笔 知乎 编辑:程序博客网 时间:2024/05/21 05:43
单例模式
定义
一个类仅有一个实例,并提供一个全局访问点。
常用场景
线程池、全局缓存、登录浮窗
单例模式几种情形
标准单例
用一个变量来标志是否已经为该类创建过对象,如果创建过,则返回该实例,否则创建新实例。
var Singleton = function (name) { this.name = name; this.instance = null;};Singleton.prototype.getName = function () { console.log(this.name);};Singleton.getInstance = function (name) { if (!this.instance) { this.instance = new Singleton(name); } return this.instance;};var single1 = Singleton.getInstance('staven');var single2 = Singleton.getInstance('kim');console.log(single1 === single2); //true
var Singleton = function (name) { this.name = name;};Singleton.prototype.getName = function (name) { console.log(this.name);};Singleton.getInstance = (function () { var instance = null; return function (name) { if (!instance) { instance = new Singleton(name); } return instance; }})();var single1 = Singleton.getInstance('staven');var single2 = Singleton.getInstance('kim');console.log(single1 === single2); //true
代理实现单例模式
var CreateDiv = function (html) { this.html = html; this.init();};CreateDiv.prototype.init = function () { var div = document.createElement('div'); div.innerHTML = this.html; document.body.appendChild(div);};var ProxSingleton = (function () { var instance; return function (html) { if (!instance) { instance = new CreateDiv(html); } return instance; }})();var single1 = new ProxSingleton('staven');var single2 = new ProxSingleton('kim');console.log(single1 === single2); //true
惰性单例
在需要的时候才创建对象实例。
var getSingle = function (fn) { var result; return function () { return result || (result = fn.apply(this, arguments)); }};var createLoginDiv = function () { var div = document.createElement('div'); div.innerHTML = '我是登录浮窗'; div.style.display = 'none'; document.getElementById('box').appendChild(div); return div;};var loginDiv = getSingle(createLoginDiv);document.getElementById('loginBtn').onclick = function () { loginDiv().style.display = 'block';};document.getElementById('exitBtn').onclick = function () { loginDiv().style.display = 'none';};
0 0
- javascript设计模式——单例模式
- javascript设计模式之一——单例模式
- JavaScript设计模式——单例模式
- 浅析JavaScript设计模式——单例模式
- JavaScript设计模式——单例模式
- 浅谈JavaScript设计模式——单例模式
- 设计模式—单例设计模式
- Javascript 设计模式 单例
- javascript设计模式----单例模式
- javascript设计模式-----单例模式
- JavaScript设计模式--单例模式
- javascript:设计模式之单例模式
- javascript设计模式--单例模式
- JavaScript设计模式----单例模式
- javascript 设计模式-单例模式
- javascript设计模式-singleton(单例)模式
- JavaScript 设计模式 - 单例模式
- JavaScript设计模式--单例模式
- java,支行期间将字符串放入常量池
- 围棋AI连胜人类50场,是时候认真思考如何应对人工智能了
- servlet+重定向+转发+数据传递
- JavaScript调试技巧之console.log()详解
- 常见文件系统,超级块,引导扇区
- JavaScript设计模式——单例模式
- 工具类库系列(二)-ExePath
- metasploit学习笔记之主机探测和端口扫描
- JSP与servlet之间的传值方式
- 设计模式-----命令模式
- 287. Find the Duplicate Number***
- Final Assignment
- layout-入门
- 百度查询复制粘贴: MySQL 中取子串函数 SUBSTR(SUBSTRING)