1.单例模式
注意:请大家区分 singleton pattern 与 Spring 中的 singleton bean,singleton bean 只能保证每个容器内,相同 id 的 bean 单实例
查看:org.springframework.transaction.TransactionDefinition的withDefaults方法
2.构建者模式
查看:org.springframework.beans.factory.support.BeanDefinitionBuilder
3.工厂方法模式
查看:ApplicationContext和BeanFactory中的getBean方法
4.适配器模式
查看:大家很熟悉的org.springframework.web.servlet.HandlerAdapter
5.组合模式
查看:org.springframework.web.method.support.HandlerMethodArgumentResolverComposite
6.装饰者模式:
注意:装饰者模式和代理模式的区别:装饰器模式注重的是功能增强,避免子类继承方式进行功能扩展,而代理模式更注重控制目标的访问
查看:org.springframework.web.util.ContentCachingRequestWrapper
7.代理模式:
这个大家就很熟悉了(JDK动态代理和Cglib动态代理)
查看:org.springframework.aop.framework.JdkDynamicAopProxy
org.springframework.aop.framework.ObjenesisCglibAopProxy
8.责任链模式:
查看:org.springframework.web.servlet.HandlerInterceptor
9.观察者模式:
spring中的事件监听器和广播器
查看:org.springframework.context.ApplicationListener
org.springframework.context.event.ApplicationEventMulticaster
org.springframework.context.ApplicationEvent
10.策略模式:
查看:org.springframework.core.annotation.MergedAnnotations.SearchStrategy
11.模板方法模式:
这个大家也比较熟悉了
大部分以 Template 命名的类,如 JdbcTemplate,TransactionTemplate
以上举例只有一种或两种,当然还有更多,大家可以自行研究一下