作为一枚程序员,如果不知道几个设计模式,出去面试都不好意思说自己技术牛了
不知道兄弟们有没有遇到过设计模式相关的面试题,我还记得很多次的面试经验都涉及到了设计模式相关的题目。
今天咱们就一探到底Spring中用到了哪些设计模式。
一、单例模式
这个设计模式绝对是Spring中使用最多的一个设计模式之一,不接受任何反驳
eans模块,context模块,aop模块,mvc模块等多个模块都能见着他的身影。 最经典的用法就是Spring容器在注册单例bean对象的实现中
//org.springframework.beans.factory.support.DefaultSingletonBeanRegistry#addSingleton
private final Map<String, Object> singletonObjects = new ConcurrentHashMap<>(256);
protected void addSingleton(String beanName, Object singletonObject) {
//加锁
synchronized (this.singletonObjects) {
this.singletonObjects.put(beanName, singletonObject);
}
}
兄弟,看到了吧?Spring通过加锁和一个Map保证一个bean名只会注册一个实例(单例)。
二、工厂模式
Spring容器就是使用简单工厂模式设计而成的。通过传入bean的名称或者类型获取bean的实例。
public interface BeanFactory {
Object getBean(String name) throws BeansException;
<T> T getBean(Class<T> requiredType) throws BeansException