Java的设计模式(2)--单例模式

  保证一个类仅有一个实例,并提供一个访问它的全局访问点。

  好处:

     (1)频繁使用的对象,可以省略new操作花费的时间,这对于那些重量级对象而言,是非常客观的一笔开销。

     (2)由于new的次数减少,对系统内存的使用频率降低,减轻GC压力,缩短GC停顿时间。

其UML图如下:

public class Singleton{
    private Singleton(){}
    private static Singleton instance = new Singleton();
    public static Singleton getInstance(){
        return instance;
    }    
}

还有一种方式就是懒加载,实现方式如下:

public class LazySingleton{
     private LazySingleton(){}
     private static LazySingleton instance = null;
     public static syncharonized LazySingleton getInstance(){
         if(instance == null){
              instance = new LazySingleton();
         }
         return instance;
     }
}

  还有中方式能聚会上面两个的有点:

public class StaticSingleton{
     private StaticSingleton(){}
     private static class SingletonHolder{
          private static StaticSingleton instance = new StaticSingleton();
     }
     public static StaticSingleton getInstance(){
          return SingletonHolder.instance;
     }
}
原文地址:https://www.cnblogs.com/wangyongwen/p/11204570.html