什么是单例模式?
单例模式必须保证一个类只能有唯一的实例,并且提供一个唯一的全局访问点!
使用场景
当我们需要一个全局的实例来帮我们的各个模块进行做事情的时候,我们的单例模式就诞生了,比如我们从数据库中获取数据来以单例模式创建实例,这样其他模块可以大量的调用这个实例。
单例模式的实现
如何创建一个不能被其他人创建的唯一实例 ?
public class Singleton {
private Singleton(){};
}
一旦创建一个唯一的私有的构造方法,那么其他人将无法在对其进行实例化。
public class Singleton {
private static Singleton _instance = new Singleton();
public static Singleton getSingleton() {
return _instance;
}
}
我们可以使用上面这种直接在类内实例化的方法,但是通常我们使用下面这种延迟加载的方式。只有在首次调用的时候才会进行实例化。
public class Factory {
private static Factory factory;
private static Object classLock = Factory.class;
public static Factory getFactory() {
synchronized (classLock) {
if (factory == null) {
factory = new Factory();