• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

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

武飞扬头像
正经程序员
帮助528

单例模式:

一般来说,单例对于应用程序来说是全局唯一的,但是在 Spring 中,这个约束被放宽了。相反,Spring 将单例限制为每个Spring IoC 容器一个对象。实际上,这意味着 Spring 只会为每个应用程序上下文的每种类型创建一个 bean。

Spring 的方法不同于对单例的严格定义,因为一个应用程序可以有多个 Spring 容器。因此,如果我们有多个容器,则同一类的多个对象可以存在于单个应用程序中。

在 spring 中用到的单例模式有: scope="singleton" ,注册式单例模式,bean 存放于 Map 中。bean name 当做 key,bean 当做 value。 默认情况下,Spring 将所有 bean 创建为单例。

简单工厂模式:

Spring 中的 BeanFactory 就是简单工厂模式的体现。根据传入一个唯一的标识来获得Bean 对象,但是在传入参数后创建还是传入参数前创建,要根据具体情况来定。

工厂模式:

工厂模式需要一个带有抽象方法的工厂类来创建所需的对象。通常,我们希望根据特定的上下文创建不同的对象。Spring 中的 FactoryBean 就是典型的工厂方法模式,实现了 FactoryBean 接口的 bean是一类叫做 factory 的 bean。其特点是,spring 在使用 getBean() 调用获得该 bean 时,会自动调用该 bean 的 getObject() 方法,所以返回的不是 factory 这个 bean,而是这个 bean.getOjbect()方法的返回值。

原型模式:

在 spring 中用到的原型模式有: scope="prototype" ,每次获取的是通过克隆生成的新实例,对其进行修改时对原有实例对象不造成任何影响。

迭代器模式:

在 Spring 中有个 CompositeIterator 实现了 Iterator,Iterable 接口和 Iterator 接口,这两个都是迭代相关的接口。可以这么认为,实现了 Iterable 接口,则表示某个对象是可被迭代的。

Iterator 接口相当于是一个迭代器,实现了 Iterator 接口,等于具体定义了这个可被迭代的对象时如何进行迭代的。

代理模式:

代理在我们的数字世界中是一种方便的工具,我们经常在软件之外使用它们(例如网络代理)。在代码中,代理模式是一种允许一个对象(代理)控制对另一个对象(主体或服务)的访问的技术。Spring 中经典的 AOP,就是使用动态代理实现的,分 JDK 和 CGlib 动态代理。

适配器模式:

Spring 中的 AOP 中 AdvisorAdapter 类,它有三个实现: MethodBeforAdviceAdapter、AfterReturnningAdviceAdapter、ThrowsAdviceAdapter。Spring会根据不同的 AOP 配置来使用对应的 Advice,与策略模式不同的是,一个方法可以同时拥有多个Advice。Spring 存在很多以 Adapter 结尾的,大多数都是适配器模式。

观察者模式:

Spring 中的 Event 和 Listener。spring 事件:ApplicationEvent,该抽象类继承了EventObject 类,JDK 建议所有的事件都应该继承自 EventObject。spring 事件监听器: ApplicationListener,该接口继承EventListener 接口,JDK 建议所有的事件监听器都应该继承EventListener。

责任链模式:

DispatcherServlet 中的 doDispatch() 方法中获取与请求匹配的处理器HandlerExecutionChain,this.getHandler() 方法的处理使用到了责任链模式。

模板模式:

在许多框架中,代码的很大一部分是样板代码。模板方法模式是一种技术,它定义了某些操作所需的步骤,实现了样板步骤,并将可定制的步骤保留为抽象的。

Spring 中的 org.springframework.jdbc.core.JdbcTemplate 就是非常经典的模板模式的应用,里面的 execute 方法,把整个算法步骤都定义好了。

这篇文章转载于:学新通

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通
  • 本文地址: https://www.swvq.com/boutique/detail/tanfbecg
  • 联系方式: luke.wu●vfv.cc
系列文章
更多 icon
同类精品
更多 icon
我要评论
我的头像
精彩评论
继续加载