日志文章

2006年07月30日 23:03:34

Java设计模式之单态模式

关于Java设计模式中的单态模式主要有两种实现方法,一种是我上篇文章所写的样式,这种方法,是最为简便的单态类,我们通常称他为饿汉式实现方式.
其实我们还有一种实现方式,就是懒汉式.懒汉式单态类在第一次被引用时将自己实例化。如果下次再调用时,他先会判断,如果已经实例化过了,则直接返回,而不在实例化,就象一个懒人一样,不想做多余的事情,重复的事情,哈哈,程序员通常较懒哟!
package test;
public class SingletonDemo {
private SingletonDemo () { }

public static SingletonDemo getInstance()
{
 if (instance == null)
 {
  synchronized(SingletonDemo .class)
  {
   if (instance == null)
   {
    instance = new SingletonDemo ();
   }
  }
 }
 return instance;
}

private static SingletonDemo instance = null;
}
饿汉式单态类在自己被加载时就将自己实例化。每次加载,都会将自己实例化。单从资源利用效率角度来讲,这是比懒汉式单态类稍差些。从速度和反应时间角度来 讲,则比懒汉式单态类稍好些。然而,懒汉式单态类在实例化时必须处理好在多个线程同时首次引 用此类时,实例化函数内部关键段的访问限制问题。特别是当单态类作为资源控器,在实例化时必然涉及 资源初始化,而资源初始化很有可能耗费时间。这意味着出现多线程同时首次引 用此类的几率变得较大。

类别: JavaEE |  评论(2) |  浏览(1766) |  收藏
2楼 [匿名]yanchengyang 2008年06月10日 11:26:50 Says:
通常情况下,我们用到类的对象的时候才会去实例化这个对象。
1楼 [匿名]青鸟学员 2008年06月09日 10:25:05 Says:
如果直接 public static final SingletonDemo instance =new SingletonDemo ();
的话怎么样?
发表评论