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

时间:2009-04-16 10:40:43

标签: design-patterns spring

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

9 个答案:

答案 0 :(得分:68)

使用了大量不同的设计模式,但有一些明显的设计模式:

  • 代理 - 在AOPremoting中大量使用。

  • 单例 - 弹簧配置文件中定义的bean默认为单例。

  • 模板方法 - 广泛用于处理样板重复代码(例如干净地关闭连接等)。例如JdbcTemplateJmsTemplateJpaTemplate


更新以下评论:对于MVC,您可能需要阅读MVC Reference

MVC中使用的一些明显模式:

  • Model View Controller :-)。 Spring MVC的优势在于您的控制器是POJO而不是servlet。这样可以更轻松地测试控制器。需要注意的一点是,控制器只需要返回逻辑视图名称,视图选择留给单独的ViewResolver。这样可以更轻松地为不同的视图技术重用控制器。

  • Front Controller。 Spring提供DispatcherServlet以确保传入的请求被分派到您的控制器。

  • View Helper - Spring有许多自定义JSP标记和速度宏,以帮助将代码与视图中的表示分离。

答案 1 :(得分:12)

当然依赖注入,或IoC(控制反转),这是整个BeanFactory / ApplicationContext内容的核心。

答案 2 :(得分:10)

DI事实上是某种策略模式。无论何时您希望某些逻辑/实现可交换,您通常都会在主机类上找到一个接口和一个适当的setter方法来连接该接口的自定义实现。

答案 3 :(得分:6)

Spring是最佳实践API模式的集合,只要你的手臂就可以写出它们的购物清单。设计API的方式鼓励您(但不强迫您)遵循这些模式,并且在您不知道自己正在这样做的情况下,有一半时间遵循这些模式。

答案 4 :(得分:3)

服务定位器模式 - ServiceLocatorFactoryBean保存上下文中所有bean的信息。当客户端代码使用name请求服务(bean)时,它只是在上下文中找到该bean并返回它。客户端代码不需要编写与Spring相关的代码来定位bean。

答案 5 :(得分:2)

Observer-Observable:它在ApplicationContext的事件机制

中使用

答案 6 :(得分:1)

工厂模式也用于通过BeanFactory和Application上下文加载bean。

答案 7 :(得分:1)

Factory Method patter:用于创建对象实例的BeanFactory Singleton:实例类型可以是上下文的单例 原型:实例类型可以是原型。 构建器模式:您还可以在类中定义一个负责创建复杂实例的方法。

答案 8 :(得分:0)

Spring容器根据bean范围(单例,原型等)生成bean对象。所以这看起来像是在实施Abstract Factory pattern。在Spring的内部实现中,我确信每个范围都应该与特定的工厂类相关联。