Spring框架中使用了哪些设计模式?
Answers:
有许多使用不同设计模式的负载,但是有一些显而易见的负载:
单例-在Spring配置文件中定义的bean默认情况下为单例。
模板方法-广泛用于处理样板重复代码(例如干净地关闭连接等)。例如JdbcTemplate,JmsTemplate,JpaTemplate。
更新以下评论:对于MVC,您可能需要阅读MVC参考。
在MVC中使用的一些显而易见的模式:
模型视图控制器:-)。Spring MVC的优点在于,您的控制器是POJO,而不是servlet。这使得对控制器的测试更加容易。需要注意的一件事是,仅需要控制器返回逻辑视图名称,并且将视图选择留给单独的ViewResolver。这样可以更轻松地将控制器重用于不同的视图技术。
前控制器。Spring提供了DispatcherServlet来确保传入的请求被调度到您的控制器。
View Helper -Spring具有许多自定义JSP标记和Velocity宏,以帮助将代码与视图中的表示分离。
Foo
并且您检索Foo
每个上下文的实例,则将获得两个不同的对象引用。取而代之的是,此处采用的设计模式是轻量化
DI东西实际上是某种策略模式。每当您想交换一些逻辑/实现时,通常都可以在主机类上找到一个接口和一个合适的setter方法,以连接该接口的自定义实现。
服务定位器模式-ServiceLocatorFactoryBean在上下文中保留所有Bean的信息。当客户端代码使用名称请求服务(bean)时,它只是在上下文中找到该bean并返回它。客户端代码不需要编写与Spring相关的代码来定位Bean。
Factory方法模式:用于创建对象实例的BeanFactory Singleton:实例类型可以是上下文的Singleton原型:实例类型可以是原型。构建器模式:您还可以在类中定义一个方法,该方法将负责创建复杂的实例。
Spring容器根据bean范围(单个,原型等)生成bean对象。因此,这看起来像实现Abstract Factory模式。在Spring的内部实现中,我确定每个范围都应绑定到特定的工厂类。