首页 > 代码库 > 【摘】JavaScript设计模式与开发实践--单例模式
【摘】JavaScript设计模式与开发实践--单例模式
本文章所有内容均摘自《Javascript设计模式与开发实践》一书(有兴趣的可以购买),加入了一点点自己的理解,写这篇文章的目的是,加强自身对设计模式的理解,以及对于没有接触过这一块的入门者的参考。
阅读本章内容,需要具备Javascript面向对象的知识,否则阅读起来可能会些许困难。
设计模式
- 单例模式
- 策略模式
- 代理模式
- 迭代器模式
- 发布-订阅模式
- 命令模式
- 组合模式
- 模板方法模式
- 享元模式
- 职责链模式
- 中介者模式
- 装饰者模式
- 状态模式
- 适配器模式
单例模式
单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式是一种常用的模式,有一些对象我们往往只需要一个,比如线程池、全局缓存、浏览器中的window对象。在Javascript开发中,单例模式的用途也非常广泛。
试想下,当我们点击登录按钮的时候,页面中会出现一个登录浮窗,而这个登录浮窗是唯一的,无论单击多少次登录按钮,这个浮窗都只会被创建一次,那么这个登录浮窗就适合用单例模式来创建。
实现单例模式
要实现一个标准的单例模式并不复杂,无非是用一个变量来标志当前是否已经为某个类创建过对象,如果是,则在下一次获取该类的实例时,直接返回之前创建的对象。
var Singleton = function(name){ this.name = name; }; Singleton.prototype.getName = function(){ alert(this.name) }; Singleton.getInstance =(function(){ var instance = null; return function(name){ if(!instance){ instance = new Singleton(name); } return instance; } })() ; var a = Singleton.getInstance(‘tom‘); var b = Singleton.getInstance(‘jerry‘); console.log(a===b);//true
代码解释:
Singleton.getInstance 函数里面则是通过判断instance是否为空,如果为空的话,实例化Singleton类。这样可以保证这个类只会被实例化一次。
符合单例模式。
这种方式相对简单,但有一个问题,就是增加了这个类的"不透明性",Singleton类的使用者必须知道这是一个单例类,跟以往通过new XX的方式来获取对象不同,这里偏要使用Singleton.getInstance来获取对象。
实现透明的单例模式
【摘】JavaScript设计模式与开发实践--单例模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。