- 单例模式
- 每个类只需要一个实例,
- 作用:保证整个应用程序的生命周期中,任何一个时刻,单例类的实例都只有一个
- 单例模式确保某一个类只有一个实例,且自行实例化,并向整个系统提供这个实例单例模式。
- 类变量uniqueInstance持有唯一的单例实例,类方法getInstance()获取唯一的实例化对象
- 全局变量与单例模式的区别:
- 全局变量:对一个对象的静态引用,不能保证应用程序中只有一个实例;过多使用全局变量会造成代码难读懂;全局变量不能实现继承
- 单例模式保证在类中只有一个实例;提供了访问该唯一实例的全局访问点
- 单例模式注意:
- 类的构造函数必须为私有
- 单例类必须提供一个全局访问点
- example:
public class Test {
private Test(){}
private static Test uniqueInstance = new Test();
public static Test getInstance(){
return uniqueInstance;
}
}
存在的问题:非线程安全
改进实例:
public class Test {
private Test(){}
private static synchronized Test uniqueInstance = new Test();
public static Test getInstance(){
return uniqueInstance;
}
}