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

Ton*_*ony 87 spring design-patterns

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

too*_*kit 70

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

  • 代理 - 在AOP远程使用中大量使用.

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

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


更新以下注释:对于MVC,您可能需要阅读MVC参考

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

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

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

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

  • 我不认为Spring为bean实现单例.请注意,单个作用域的bean将具有每个应用程序上下文**的单个实例**.因此,如果您的应用程序有两个Spring上下文,它们会加载一个相同的单例bean`Foo`并且每个上下文检索一个`Foo`实例,您将获得两个不同的对象引用.相反,这里应用的设计模式是[flyweight](http://en.wikipedia.org/wiki/Flyweight_pattern) (10认同)

Cho*_*hos 12

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


Oli*_*ohm 10

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


ska*_*man 6

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