Spring框架中使用了哪些设计模式?
答案 0 :(得分:68)
使用了大量不同的设计模式,但有一些明显的设计模式:
单例 - 弹簧配置文件中定义的bean默认为单例。
模板方法 - 广泛用于处理样板重复代码(例如干净地关闭连接等)。例如JdbcTemplate,JmsTemplate,JpaTemplate。
更新以下评论:对于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的内部实现中,我确信每个范围都应该与特定的工厂类相关联。