单例
所谓单例设计模式,即时采取一定的方法保证在整个软件系统当中,对于某个类只能存在一个对象实例,并且该类只提供一个其对象实例的方法(静态方法)
恶汉式
优缺点说明:
优点:这种写法比较简单,就是在类装载的时候就完成实例化.避免了线程同步问题
缺点: 在类装载的时候就完成了实例化,没有达到Lazy Loading的效果.如果从始至终都没有使用过这个实例,就会造成内存的浪费
这种方式基于ClassLoader机制避免了多线程同步问题,不过,instance在类装载的时就实例化,在单例模式中大多数都是调用getInstance方法,但是导致类装载的原因有很多种,因此不能确定有其他方式(或者其他静态方法)导致这个类被装载,这时候初始化instance就没有达到lazy loading的效果
结论: 这种单例模式可用,可能 造成内存浪费
代码演示
package com.atguigu.principle.singleton.type1;
/**
*/
public class SingletonTest01 {
// 1. 构造器私有化,外部不可以new
private SingletonTest01() {
}
// 2. 本类内部创建对象实例
// 恶汉破不及待 new 这个 对象
private final static SingletonTest01 instance = new SingletonTest01();
// 3. 提供一个工友的静态方法,返回实例对象
public static SingletonTest01 getInstance() {
return instance;
}
}