一、单例模式
- 饿汉模式
public class Singleton01 {
// 1、构造器私有化
private Singleton01() { }
// 2、类初始化的时候,立即加载该对象
private static Singleton01 instance = new Singleton01();
// 3、提供获取该对象的方法,没有synchronized,效率高!
public static Singleton01 getInstance() {
return instance;
}
}
// 测试
class Single01Test{
public static void main(String[] args) {
Singleton01 instance1 = Singleton01.getInstance();
Singleton01 instance2 = Singleton01.getInstance();
System.out.println(instance1==instance2);
}
}
- 懒汉模式
public class Singleton02 {
// 1、构造器私有化
private Singleton02() { }
// 2、类初始化的时候,不立即加载该对象
private static Singleton02 instance;
// 3、提供获取该对象的方法,有synchronized,效率较低!
public static synchronized Singleton02 getInstance() {
if (instance == null) {
instance = new Singleton02();
}
return instance;
}
}
// 测试
class Single02Test{
public static void main(String[] args) {
Singleton02 instance1 = Singleton02.getInstance();
Singleton02 instance2 = Singleton02.getInstance();
System.out.println(instance1==instance2);
}
}
网友评论