作为对象的创建模式,单例模式确保系统运行时,在内存空间中某个类的实例只有一个,由该类自行实例化并向整个系统提供这个实例。
单例模式实现:
(1)采用static共享对象实例。static关键字修饰的变量,在内存中只有一份。
(2)采用private构造函数防止外界new操作
方案一:加载类的时候执行实例的初始化。优点:避免多线程同步的问题;缺点是如果该类中还有很多别的公共静态方法,则程序中可能只用到了该类的其他静态方法,并没有用过该实例,存在内存浪费。
方案二:懒加载,获得该实例对象的时候,再执行实例的初始化。静态内部类被首次加载时,会执行一次静态成员属性的初始化。
注:
java实例初始化顺序:
* 父类静态属性&静态代码块、子类静态属性&子类静态代码块、
* 父类非静态属性&非静态代码块、父类构造函数、
* 子类非静态属性&非静态代码块、子类构造函数。