单例模式

优点

最优雅的实现方式. 系统内存 中该类只存在一个对象,节省了系统资源,对于一些需要频繁创建销毁的对象,使用单例模式可以提高系统性能。

缺点

当想实例化一个单例类的时候,必须要记住使用相应的获取对象的方法,而不是使用new,可能会给其他开发人员造成困扰,特别是看不到源码的时候。

适用场合

  1. 需要频繁的进行创建和销毁的对象;
  2. 创建对象时耗时过多或耗费资源过多,但又经常用到的对象;
  3. 工具类对象;
  4. 频繁访问数据库或文件的对象。(ps:单例模式是开发上用的比较多的一种设计模式)

线程安全的单例模式的几种写法

  • 1.饿汉式双重校验锁写法
public class Singleton
{
    private Singleton(){}

    private  static volatile Singleton singleton=null; //加volatile防止指令重排序

    public Singleton getSingleton(){
        if(singleton==null){
            synchronized (this){
                if(singleton==null){
                    singleton=new Singleton();
                    return singleton;
                }
            }
        }
        return singleton;
    }
}
  • 2.静态内部类的写法
public class Singleton
{
    private Singleton(){}

  private static class SingletonInstance{
        private final static Singleton singleton =new Singleton();
  }

  public Singleton getSingleton(){
        return SingletonInstance.singleton;
  }
}
  • 3.枚举类的写法
public enum Singleton {
    INSTANCE
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容