什么是单例模式
单例模式(也叫单件模式)的作用就是保证在整个应用程序的生命周期中,任何一个时刻,单例类的实例都只存在一个(当然也可以不存在)。
全局变量和单例模式的区别
- 首先,全局变量是对一个对象的静态引用,全局变量确实可以提供单例模式实现的全局访问这个功能,但是它并不能保证应用程序中只有一个实例;
- 编码规范也明确指出应该要少用全局变量,因为过多使用全局变量,会造成代码难度
- 全局变量并不能实现继承,单例模式在类中保存了它的唯一实例——这个类,他可以保证只能创建一个实例,同时它还提供了一个访问该唯一实例的全局访问点。
注意点
单例模式用来保证系统中一个类只有一个实例。单例类的构造函数必须为私有,同时单例类必须提供一个全局访问点。
单例模式代码
public class Test{
private Test() {}
private static Test uniqueInstance = new Test();
public static Test getInstance() {
return uniqueInstance;
}
}
使用这种方法实现的单例模式,在类被加载时就会实例化这个类的一个对象,由于在使用之前对象已经创建好,因此,可以在多线程环境下使用这种方法。如果采用按需实例化的方法(在实例化对象在使用的时候才实例化),就需要考虑多线程的同步。