标签:代码 script 使用 定义 适合 阅读 状态 rip 实践
本文章所有内容均摘自《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来获取对象。
标签:代码 script 使用 定义 适合 阅读 状态 rip 实践
原文地址:http://www.cnblogs.com/shiyou00/p/6415367.html