深入剖析Mybatis实现的细节设计模式

第二章 资源加载 单例模式

2019-01-15  本文已影响2人  Xcdf

简书 许乐
转载请注明原创出处,谢谢!

  在整个系统中,单例类只有一个实例对象,需要自行完成实例化,并且始终对外提供同一实例对象。单例模式只允许创建一个对象,从而避免了频繁的创建对象,比较节省内存资源,减少了GC次数,加快对象访问速度。如数据库连接池、应用配置等一般都是单例。

静态内部类的写法

public class SingleTon{

 private SingleTon(){}  //构造器私有化
 
 //私有的静态内部类,该静态内部类只会在newInstance()方法中被使用
 private static class SingleTonHoler{
   //静态字段
   static SingleTon INSTANCE = new SingleTon();
 }

 public static SingleTon getInstance(){
   return SingleTonHoler.INSTANCE;  // 访问静态内部类的静态字段
 }

}

  Java 类加载机制:当第一次访问类中的静态字段时(即调用getstatic或setstatic字节码指令时)会触发类加载操作,并且同一个类只被加载一次,类加载过程中,由类加载器负责加锁,从而保证线程安全。相比于双重检查锁的写法,更加简洁明了,也更加不容易出错。

问题:为什么使用单例模式而不用静态方法?
  静态内部类的单例模式是基于静态方法(类)来实现的。

上一篇 下一篇

猜你喜欢

热点阅读