<返回更多

Spring框架中都用到了哪些设计模式?

2022-02-09    Java架构海子
加入收藏

Spring

控制反转IOC

依赖注入DI

工厂设计模式Factory

BeanFactory

ApplicationContext

单例设计模式Singleton

// 通过线程安全的concurrentHashMap实现单例注册表
private final Map<String, Object> singletonObjects = new ConcurrentHashMap<String, Object>(64);

public Object getSingleton(String beanName, ObjectFactory<?> singletonFactory) {
	Assert.notNull(beanName, "'beanName' must not be null");
	synchronized(this.singletonObjects) {
		// 检查缓存中是否存在实例
		Object singletonObject = this.singletonObjects.get(beanName);
		if (singletonObject == null) {
			...
			try {
				singleton = singletonFactory.getObject();
			}
			...
			// 如果实例对象不存在,则将对象注册到单例注册表中
			addSingleton(beanName, singletonObject);
		}
		return (singletonObject != NULL_OBJECT ? singletonObject : null);
	}
}

protected void addSingleton(String beanName, Object singletonObject) {
	synchronized(this.singletonObjects) {
		this.singletonObjects.put(beanName, (singletonObject != null ? singletonObject : NULL_OBJECT));
	}
}
复制代码

代理设计模式Proxy

AOP中的代理模式

Spring框架中都用到了哪些设计模式?

 

AspectJ和Spring AOP比较

AspectJ

Spring AOP

模板方法模式TemplateMethod

Spring框架中都用到了哪些设计模式?

 

观察者模式Observer

Spring事件驱动模型

事件角色Event

Spring框架中都用到了哪些设计模式?

 

事件监听者角色Listener

@FunctionalInterface
public interface ApplicationListener<E extends ApplicationEvent> extends EventListener {
	void onApplicationEvent(E event);
}
复制代码

事件发布者角色Publisher

@FunctionalInterface
public interface ApplicationEventPublisher {
	default void publishEvent(ApplicationEvent event) {
		publishEvent((Object) event);
	}

	void publishEvent(Object event);
}
复制代码

Spring事件流程

适配器模式Adapter

Spring AOP中的适配器模式

Spring MVC中的适配器模式

装饰器模式Decorator

总结

设计模式

Spring框架

工厂模式

BeanFactory
ApplicationContext

单例模式

Spring中的Bean

代理模式

Spring AOP

模板方法模式

Spring中以Template结尾的类

观察者模式

Spring事件驱动模型

适配器模式

Spring AOP中的AdvisorAdapter
Spring MVC中的HandlerAdapter

装饰器模式

Spring中含有Wrapper和含有Decorator的类

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>