Spring中设计模式的体现

编程入门 行业动态 更新时间:2024-10-26 20:24:05

Spring中设计模式的体现

一、Java中常用的24种设计模式二、Spring中设计模式的体现(目前已知12种)2.1、Factory(工厂模式)2.2、Proxy/Dynamic proxy(JDK、Cglib等)2.3、MVC2.4、Front Controller(前端控制器)2.5、View Helper2.6、Template method(模板方法)2.7、Prototype(原型模式)实例类型可以是原型。2.8、Builder(构造器模式)Spring提供了通过BeanDefinitionBuilder对象,使用构建器模式来构造BeanDefinition的编程方法。2.9、 IOC(依赖注入)2.10、Singleton(单例模式)2.11、chain-of-responsibility(责任链模式)2.12、观察者模式

一、Java中常用的24种设计模式

1.1、Design Factory Pattern(设计工厂模式)1.2、Singleton Pattern(单例模式)1.3、Builder Pattern(建造者模式)1.4、Prototype Pattern(原型模式)1.5、Adapter Pattern(适配器图案)1.6、Bridge Pattern(桥型)1.7、Filter Pattern(筛选模式)1.8、Composite Pattern(复合图案)1.9、Decorator Pattern(装饰图案)1.10、Facade Pattern(外墙图案)1.11、Flyweight Pattern(跳线模式)1.12、Proxy Pattern(代理模式)1.13、Command Pattern(命令模式)1.14、Interpreter Pattern(口译模式)1.15、Iterator Pattern(迭代器模式)1.16、Mediator Pattern(中介者模式)1.17、Memento Pattern(纪念图案)1.18、Observer Pattern(观察者模式)1.19、State Pattern(状态模式)1.20、Null Object Pattern(空对象模式)1.21、Strategy Pattern(策略模式)1.22、Template Pattern(模板图案)1.23、Visitor Pattern(访客模式)1.24、MVC Pattern(MVC模式)1.25、Business Delegate Pattern(业务代表模式)1.26、Abstract Factory Pattern(抽象工厂模式)1.27、Chain of Responsibility Pattern(责任链模式)1.28、Composite Entity Pattern(复合实体模式)1.29、Data Aess Object Pattern(数据访问对象模式)1.30、Front Controller Pattern(前控制器模式)1.31、Intercepting Filter Pattern(拦截滤镜模式)1.32、Service Locator Pattern(服务定位器模式)1.33、Transfer Object Pattern(转移对象模式)

二、Spring中设计模式的体现(目前已知12种)

2.1、Factory(工厂模式)

Spring框架通过以下两种方法将工厂设计模式用于bean对象的创建。

Spring BeanFactory容器
它是spring框架中提供的最简单的容器,它为DI(依赖注入)提供了基本支持。我们使用以下接口来处理此容器。[.springframework.beans.factory.BeanFactory]。

Spring ApplicationContext容器
它是spring容器中存在的另一个容器,它增加了企业特定的功能。这些功能包括以下功能:解析来自属性文件的文本消息,并将应用程序事件发布到关注的事件侦听器。我们使用以下接口来处理此容器。[.springframework.context.ApplicationContext]。以下是最常用的ApplicationContext实现。FileSystemXmlApplicationContext(需要向构造函数提供XML bean配置文件的完整路径)。ClassPathXmlApplicationContext(需要设置bean配置XML文件的CLASSPATH,以便从XML文件加载bean的元数据)。WebXmlApplicationContext(容器在具有所有bean元数据的Web应用程序中加载XML文件)。

// Spring uses factory pattern to create instances of the objects
BeanFactory factory = new XmlBeanFactory(new FileSystemResource(“spring.xml”));
Dog dog= (Dog) factory.getBean(“dog”);
dog.eat();

2.2、Proxy/Dynamic proxy(JDK、Cglib等)

在AOP,事务机制,远程调用过程中中大量使用

2.3、MVC

Spring MVC的优点是您的控制器是POJO,而不是servlet,控制器只需返回逻辑视图名,并且将视图选择留给单独的ViewResolver。这样可以更轻松地将控制器重用于不同的视图技术。

2.4、Front Controller(前端控制器)

Spring提供DispatcherServlet,以确保传入的请求被调度到中央控制器。

2.5、View Helper

Spring有许多自定义JSP标签和Velocity模板定义,以帮助将代码与视图中的展现分离。

2.6、Template method(模板方法)

大量用于重复性的代码(例如干净地关闭连接等)。例如JdbcTemplate,JmsTemplate,JpaTemplate。

2.7、Prototype(原型模式)实例类型可以是原型。

2.8、Builder(构造器模式)Spring提供了通过BeanDefinitionBuilder对象,使用构建器模式来构造BeanDefinition的编程方法。

package .springframework.beans.factory.support;
public class BeanDefinitionBuilder {public static BeanDefinitionBuilder genericBeanDefinition() {return new BeanDefinitionBuilder(new GenericBeanDefinition());}public static BeanDefinitionBuilder genericBeanDefinition(String beanClassName) {BeanDefinitionBuilder builder = new BeanDefinitionBuilder(new GenericBeanDefinition());builder.beanDefinition.setBeanClassName(beanClassName);return builder;}public static BeanDefinitionBuilder genericBeanDefinition(Class<?> beanClass) {BeanDefinitionBuilder builder = new BeanDefinitionBuilder(new GenericBeanDefinition());builder.beanDefinition.setBeanClass(beanClass);return builder;}
....省略很多
}

2.9、 IOC(依赖注入)

依赖注入是软件工程中的一种技术,其中一个对象可以提供另一个对象的依赖。可以由对象使用的这种依赖关系称为Service,注入是将依赖关系传递给使用该依赖关系的对象。控制反转或IOC是软件工程中的设计原则,通过该原则,自定义编写的计算机程序部分可以从通用框架接收控制流。Spring框架具有一个IOC容器,该容器负责对象的创建,将对象连接在一起,配置这些对象并处理这些对象从创建到完全销毁的整个生命周期。该容器具有依赖注入(DI),用于管理应用程序中存在的组件。这样的对象被称为Spring Beans。依赖注入或IOC容器是在Spring框架中用于解耦过程的主要原理。

2.10、Singleton(单例模式)

默认情况下,在spring xml配置文件中定义的bean仅创建一次。不管使用getBean()方法进行了多少次调用,它始终只会有一个bean。这是因为,默认情况下,spring中的所有bean都是单例。
可以使用Prototype bean scope重写,重写后,spring将为每个请求创建一个新的bean对象。
Singleton模式

<!-- To specify singleton scope is redundant -->
<bean id="beanId" class=".howtodoinjava.BeanClass" scope="singleton" />
//or
<bean id="beanId" class=".howtodoinjava.BeanClass" />

prototype模式

@Component
@Scope("prototype")
public class BeanClass {
}
<bean id="beanId" class=".howtodoinjava.BeanClass" scope="prototype" />

还有包括RequestScope,SessionScope,ApplicationScope,websocket Scope,自定义等等,可参考这里

2.11、chain-of-responsibility(责任链模式)

SpringMVC 关于DispatcherServlet的部分,对请求的分发,拦截,过滤等,就是基于责任链的模式实现。

2.12、观察者模式

在Spring的事件驱动实现中,用到了观察者模式
SpringEventPublish这个对象。。。

更多推荐

模式,Spring

本文发布于:2023-05-20 18:54:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/154793.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模式   Spring

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!