Spring都用到了那些设计模式(3)
Spring都用到了那些设计模式(3)
博为峰教研组 发表于1年前
Spring都用到了那些设计模式(3)
  • 发表于 1年前
  • 阅读 55
  • 收藏 0
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

前几节我们学习了Spring中的工厂模式、单例模式、代理模式、包装模式以及适配器模式。设计模式的运用让Spring整个框架非常灵活,便于我们学习、使用及扩展。接下来还有几个重要的模式要介绍给大家。

7.观察者(Observer)

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

 11.21图片13_水印.png

Spring中Observer模式常用的地方是listener的实现。如ApplicationListener。

8. 策略(Strategy)

定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。

Spring中在实例化对象的时候用到Strategy模式,见如下图:

 11.21图片14_水印.png

在SimpleInstantiationStrategy中有如下代码说明了策略模式的使用情况:

 11.21图片15_水印.png

9.模板方法(Template Method)

定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。Template Method使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

Template Method模式一般是需要继承的。这里想要探讨另一种对Template Method的理解。Spring中的JdbcTemplate,在用这个类时并不想去继承这个类,因为这个类的方法太多,但是我们还是想用到JdbcTemplate已有的稳定的、公用的数据库连接,那么我们怎么办呢?我们可以把变化的东西抽出来作为一个参数传入JdbcTemplate的方法中。但是变化的东西是一段代码,而且这段代码会用到JdbcTemplate中的变量。怎么办?那我们就用回调对象吧。在这个回调对象中定义一个操纵JdbcTemplate中变量的方法,我们去实现这个方法,就把变化的东西集中到这里了。然后我们再传入这个回调对象到JdbcTemplate,从而完成了调用。这可能是Template Method不需要继承的另一种实现方式吧。

以下是一个具体的例子, JdbcTemplate中的execute方法:

 11.21图片16_水印.png

共有 人打赏支持
粉丝 47
博文 1224
码字总数 479077
×
博为峰教研组
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: