Spring都用到了那些设计模式(3)

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

7.观察者(Observer)数据库

定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,全部依赖于它的对象都获得通知并被自动更新。设计模式

 11.21图片13_水印.png

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

8. 策略(Strategy)学习

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

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

 11.21图片14_水印.png

在SimpleInstantiationStrategy中有以下代码说明了策略模式的使用状况:code

 11.21图片15_水印.png

9.模板方法(Template Method)server

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

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

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

 11.21图片16_水印.png

相关文章
相关标签/搜索