设计模式-单例

来源:互联网 发布:python api接口开发 编辑:程序博客网 时间:2024/06/08 10:03

/**
 * 这是最简单的一直实现方式,它的不足之处是无法对instance做延迟加载
 */

public class Singleton1 {
     private static Singleton1 instance = new Singleton1();
     private Singleton1(){
          System.out.println("Singleton1 is create");
     }
     public static Singleton1 getInstance(){
          return instance;
     }
}

 

/**
 *这种方式实现了延迟加载,但是在多并发环境中同步对性能有影响
 */
public class Singleton2 {
     private static Singleton2 instance = null;
     private Singleton2(){
          System.out.println("Singleton2 is create");
     }
    public static synchronized Singleton2 getInstance(){
         if(instance == null){
             instance = new Singleton2();
         }
         return instance;
     }
}

/**
 *使用内部类的方式实现单例,既可以做到延迟加载,也不必担心使用同步影响性能,是比较完善的实现方式。
 */
public class Singleton3 {
     private Singleton3(){
          System.out.println("Singleton3 is create");
     }
     public static Singleton3 getInstance(){
          return SingletonHolder.instance;
     }
     private static class SingletonHolder{
          private static Singleton3 instance = new Singleton3();
     }
}