单例的实现方式

[TOC]

设计模式

一、单例实现

  • 懒汉式

    /**
     * 饿汉式,线程安全,调用效率高 ,但是不能延迟加载
     */
    public class Singleton1 {
    
       private static final Singleton1 singleton = new Singleton1();
    
       private Singleton1 () {
       }
    
       public static Singleton1 getInstance() {
          return singleton;
       }
    }
    
  • 饿汉式

    /**
     * 懒汉式,线程安全,效率不高,可延迟加载
     */
    public class Singleton {
    
       private static Singleton singleton;
    
       private Singleton() {
       }
    
       public static synchronized Singleton getInstance() {
          if (null == singleton) {
             singleton = new Singleton();
          }
          return singleton;
       }
    }
    
  • 枚举实现

    /**
     * 枚举实现单列,线程安全,效率高,但是不能延迟加载
     */
    public class SingletonUseEnum {
    
       private enum  SingletonEnum {
    
          INSTANCE;
           
          private final SingletonUseEnum singleton;
    
          SingletonEnum() {
             singleton = new SingletonUseEnum();
          }
    
          private SingletonUseEnum getInstance() {
             return singleton;
          }
       }
    
       private SingletonUseEnum() {
    
       }
    
       public static SingletonUseEnum getInstance() {
          return SingletonEnum.INSTANCE.getInstance();
       }
    }
    
  • 内部类的实现方式
/**
 * 功能描述 <p> 静态内部类实现方式,线程安全,资源利用率高,可以延时加载
 */
public class Singleton3 {

    /**
     * 静态内部类
     */
    private static class SingletonInnerClass {
        public static final Singleton3 instance = new Singleton3();
    }

    private Singleton3 () {

    }

    public static Singleton3 getInstance() {
        return SingletonInnerClass.instance;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。