- 单例模式:目的是为了让系统中只有一个调用对象,缺点是单例模式使其他程序过分依赖它,而且不同单例运行在不同进程中,使得维护困难
- 饿汉式实现(单例对象立即加载)
/**
* 测试饿汉式单例模式,线程安全,调用效率高
*
*/
public class SingletonDemo1 {
private static SingletonDemo1 instance = new SingletonDemo1();// 类初始化时,立即加载
private void SingletonDemo1() {//私有化构造方法
}
public static SingletonDemo1 getInstance() {
return instance;
}
}
- 懒汉式实现(单例对象延迟加载)
/**
* 测试懒汉式单例模式
*
*/
public class SingletonDemo2 {
// 类初始化时,不初始化对象(延时加载;,真正用的时候再创建)。
private static SingletonDemo2 instance;
private SingletonDemo2() {
}
// 方法同步,调用效率低
public static synchronized SingletonDemo2 getInstance() {
if (instance == null) {
instance = new SingletonDemo2();
}
return instance;
}
}
- 双重检测锁模式(JVM有的不支持不用)
- 静态内部类实现(也是一种懒加载方式)
/**
* 测试静态内部类实现单例模式 这种方式:线程安全,调用效率高,并且实现了延时加载
*/
public class SingletonDemo3 {
private SingletonDemo3() {
}
private static class SingletonClassInstance {
private static final SingletonDemo3 instance = new SingletonDemo3();
}
// 方法没有同步,调用效率高
public SingletonDemo3 getInstance() {
return SingletonClassInstance.instance;
}
}
- 枚举实现单例模式