单例设计模式
为什么会有单例设计模式?
避免创建多个实例而浪费资源,能够保证整个应用中有且只有一个实例。(比如:类A和类B和它们的共享资源类C;A要修改C里面的数据不能同步到B,其实并没有真正的修改)
单例模式设计思想
保证在应用中只有一个对象
单例模式设计步骤
要保证唯一性:
- 不允许其他程序new对象
- 在该类中创建对象
- 对外提供方法让其他程序能获取该对象
所以应该这样做:
- 私有化这个类的构造函数
- 在这个类中创建一个这个类的对象
- 定义一个公有的方法,将创建的对象放在这返回
方式
- 懒汉式
- 饿汉式
懒汉式
public class LazySingleton {
//在该类(私有的静态的)中创建一个该类的对象
private static LazySingleton instance = null;
//私有化构造器
private LazySingleton() {
}
//向外提供一个公有的方法返回创建的对象
public static LazySingleton getInstance() {
if(instance == null) {
instance = new LazySingleton();
}
return instance;
}
}
饿汉式
public class HungrySingleton {
//在该类(私有的静态的)中创建一个该类的对象
private static HungrySingleton instance = new HungrySingleton();
//私有化构造器
private HungrySingleton() {
}
//向外提供一个公有的方法返回创建的对象
public static HungrySingleton getInstance() {
return instance;
}
}
懒汉式与饿汉式的区别
饿汉式在类加载的时候就完成了实例化;懒汉式调用getInstance方法的时候才创建对象的。