JavaScript 单例模式

下班之前,给大家简单的讲述一下JavaScript最实用的设计模式用法---单例模式

单例模式 

意思就是确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 。 

两种实现方式: 懒汉单例模式和饿汉式单例模式。

关键点:

1)一个类只有一个实例 。

2)它必须自行创建这个实例。

3)它必须自行向整个系统提供这个实例 。

先说Java单例模式是怎样实现的,

1.  懒汉单例模式(类加载时不初始化

 

 1 /**
2 *
3 * 文件名:Singleton.java
4 * 创建作者: 李航杰
5 * 创建日期:2012-2-22 上午下午06:47:25
6 */
7 public class Singleton {
8
9 //懒汉式单例模式
10 //比较懒,在类加载时,不创建实例,因此类加载速度快,但运行时获取对象的速度慢
11 private static Singleton instance=null;
12 private Singleton(){
13 //私有构造函数,防止外界初始化该对象
14 }
15 //静态,同步,公开访问点
16 public static synchronized Singleton getInstance(){
17 if(instance==null){
18 instance=new Singleton();
19 }
20 return instance;
21 }
22 }

2.饿汉式单例模式(在类加载时就完成了初始化,所以类加载较慢,但获取对象的速度快

 

 1 /**
2 *
3 * 文件名:Singleton.java
4 * 创建作者: 李航杰
5 * 创建日期:2012-2-22 上午下午06:48:25
6 */
7 public class Singleton {
8
9 ////静态私有成员,已初始化
10 private static Singleton instance=new Singleton();
11 private Singleton(){
12 //私有构造函数,防止外界初始化该对象
13 }
14 //静态,不用同步(类加载时已初始化,不会有多线程的问题)
15 public static Singleton getInstance(){
16
17 return instance;
18 }
19 }


备注:优缺点已经详细注释了,废话不多说,赶下说一下JS的单例模式

/*

因为我们需要访问该类本身,比如可能有时候需要做 instanceof 判断等等。
 实现单例很简单,只需在构造方法的内部对caller做一些限制就可以了,单例模式的最终目的不是不让new对象,而是只允许存在一个对象实例。
*/ 

 将自己前阵子,写好游戏框架中,封装的导演类代码贴出来,如下代码

 

 1 /**
2 * 创建一个单例导演类
3 *@author : LeeHonGee
4 * Create DateTime: 2012-1-13 上午11:40:52
5 *
6 */
7 function Director(){
8 Director.instance=this;
9
10 }
11 Director.getInstance=function(){
12 var instance;
13 if(Director.instance==null){
14 instance=new Director();
15 }else{
16 instance=Director.instance;
17 }
18 return instance;
19 }

好,大功告成,下班回去咯,保佑现在的公车不挤了,哈哈....

 创建者:LeeHonGee     创建时间:2012-02-22     下午19:10

你可能感兴趣的:(JavaScript)