Singleton design pattern

定义:
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。

第一种形式:
public class Singleton{

    private Singleton(){};
    private static singleton = new Singleton();
    public staic Singleton getInstance(){
       return singleton;
    }
}
第二种形式:

public class Singleton{

   private Singleton singleton = null;
   public static synchronized Singleton getInstance(){
      if(singleton == null){
         singleton = new Singleton();
      }
      return singleton;
   }
}
    第二种形式是lazy initialization,也就是说第一次调用时初始Singleton,以后就不用再生成了。
    注意到lazy initialization形式中的synchronized,这个synchronized很重要,如果没有synchronized,那么使用getInstance()是有可能得到多个Singleton实例。

使用Singleton注意事项:
    有时在某些情况下,使用Singleton并不能达到Singleton的目的,如有多个Singleton对象同时被不同的类装入器装载;在EJB这样的分布式系统中使用也要注意这种情况,因为EJB是跨服务器,跨JVM的。
    Singleton模式看起来简单,使用方法也很方便,但是真正用好,是非常不容易,需要对Java的类、线程、内存等概念有相当的了解。





猜你喜欢

转载自xafc2370.iteye.com/blog/1041889