1.4 Spring用了哪些设计模式
Spring 框架广泛应用了多种设计模式,这些设计模式帮助使得框架更加灵活、可扩展和易于维护。下面是一些Spring中常用的设计模式及其在Spring框架中的应用示例:
单例模式(Singleton Pattern)
- 应用: 在Spring框架中,默认情况下,所有的Bean都是单例的,即每个容器中只存在一个Bean的实例。
工厂模式(Factory Pattern)
- 应用:
BeanFactory
和ApplicationContext
是Spring的核心接口,用于配置和管理Bean的生命周期,它们都是典型的工厂模式实现。
- 应用:
代理模式(Proxy Pattern)
- 应用: Spring AOP(面向切面编程)广泛使用代理模式,通过代理对象来管理访问原始对象的行为。支持JDK动态代理和CGLIB代理。
模板方法模式(Template Method Pattern)
- 应用: Spring 中的很多模板类,如
JdbcTemplate
,HibernateTemplate
等,这些都使用模板方法模式,提供了一个执行标准流程的骨架,允许用户通过回调方法定制流程的某些步骤。
- 应用: Spring 中的很多模板类,如
策略模式(Strategy Pattern)
- 应用: Spring的资源访问策略。
Resource
接口有多种实现方法,如ClassPathResource
,FileSystemResource
等,可以在运行时根据需要选择具体的资源类型。
- 应用: Spring的资源访问策略。
适配器模式(Adapter Pattern)
- 应用: Spring MVC 中的
HandlerAdapter
,用于适配不同类型的控制器实现。
- 应用: Spring MVC 中的
观察者模式(Observer Pattern)
- 应用: Spring事件(Application Events)的处理就是观察者模式的实现,允许定义事件监听器来响应应用程序事件。
装饰器模式(Decorator Pattern)
- 应用: Spring中的
BufferedInputStream
和BufferedOutputStream
等I/O流的使用可以视为装饰器模式的应用,通过装饰方式提供更高效的输入输出处理。
- 应用: Spring中的
建造者模式(Builder Pattern)
- 应用: 在Spring框架中,使用
UriComponentsBuilder
等API来构建复杂的对象(如URI)是建造者模式的一个示例。
- 应用: 在Spring框架中,使用
责任链模式(Chain of Responsibility Pattern)
- 应用: Spring Security 的过滤器链(Filter Chain)实现了责任链模式,每个过滤器执行不同的安全检查功能,并决定是否将请求传递到下一个过滤器。
原型模式(Prototype Pattern)
- 应用: 在Spring中,也可以配置Bean作为原型,这样每次请求Bean时,都会创建一个新的实例。
通过这些设计模式的应用,Spring框架提供了极高的扩展性和灵活性,使其成为企业级应用开发中广泛使用的框架之一。