最近在看spring的源码,发现用了代码中用了很多的设计模式,之前也学习过设计模式,现在正好结合spring源码作一个总结与回顾。
单例模式
GlobalAdvisorAdapterRegistry 是spring中AOP配置的注册类,以下代码就用了单例模式。
public abstract class GlobalAdvisorAdapterRegistry {
/**
* Keep track of a single instance so we can return it to classes that request it.
*/
private static AdvisorAdapterRegistry instance = new DefaultAdvisorAdapterRegistry();
/**
* Return the singleton {@link DefaultAdvisorAdapterRegistry} instance.
*/
public static AdvisorAdapterRegistry getInstance() {
return instance;
}
}
什么是单例模式呢?
以下是百度百科给出的定义:
通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
从代码中可以看到instance 被声明为一个静态变量,静态变量在类加载进虚拟机时进行了初始化,所以getInstance()方法返回的都是同一个对象。