Spring框架中使用了哪些devise模式?
Spring框架中使用了哪些devise模式?
有很多不同的devise模式使用,但有一些明显的:
-
代理 – 大量使用AOP和远程处理 。
-
Singleton – 在springconfiguration文件中定义的bean默认是单例。
-
模板方法 – 广泛用于处理样板重复代码(如清理closures连接等)。 例如JdbcTemplate , JmsTemplate , JpaTemplate 。
更新以下注释:对于MVC,您可能需要阅读MVC参考
MVC中使用的一些明显的模式:
-
模型视图控制器 :-)。 Spring MVC的优点是你的控制器是POJO而不是servlet。 这使得更容易testing控制器。 有一点需要注意的是,控制器只需要返回一个逻辑视图名称,视图select留给一个单独的ViewResolver 。 这使得重复使用不同视图技术的控制器变得更容易。
-
前部控制器 。 Spring提供DispatcherServlet来确保传入的请求被分派到您的控制器。
-
视图助手 – Spring有许多自定义JSP标签和速度macros,以帮助将代码与视图中的代码分开。
当然,dependency injection,或IoC(控制反转),这是整个BeanFactory / ApplicationContext的核心。
DI事实上是某种策略模式。 无论何时您希望成为可交换的逻辑/实现,您通常会在主机类上find一个接口和一个适当的setter方法来连接您的自定义接口实现。
Spring是一个最佳实践API模式的集合,只要你的arm可以写出它们的购物清单。 API的devise方式鼓励你(但并不强迫你)遵循这些模式,而你在关注他们的一半时间却不知道你正在这样做。
服务定位器模式 – ServiceLocatorFactoryBean保持上下文中所有bean的信息。 当客户端代码使用名称来请求一个服务(bean)时,它只是在上下文中定位该bean并返回它。 客户端代码不需要编写与spring相关的代码来定位一个bean。
工厂方法patter:用于创build对象实例的BeanFactory单例:实例types可以是单个的上下文原型:实例types可以是原型。 构build器模式:您也可以在类中定义一个方法,负责创build复杂的实例。
Observer-Observable:它在ApplicationContext的事件机制中使用
工厂模式也用于通过BeanFactory和Application上下文加载Bean。
Spring容器根据bean的作用域(singleton,prototype等)生成bean对象。 所以这看起来像实现抽象工厂模式 。 在Spring的内部实现中,我确信每个范围都应该绑定到特定的工厂类。