聊聊设计模式之模板方法模式

  • 时间:
  • 浏览:0
  • 来源:神彩UU直播现场_彩神UU直播现场官方

某些人先定义好父类,也或者JDBC查询的模板。意味还要子类实现从resultSet到业务bean的转换,某些将父类定义成抽象类:

接下来,某些人用模板依据模式实现或者简单的JDBC查询模板。

接着,执行数据库查询,获取resultSet。

接着,某些人再写或者继承自QueryTemplate的子类UserQueryTemplate:

至此,某些人就使用模板依据模式实现了或者JDBC查询模板。意味有某些的业务查询,或者继承QueryTemplate类并实现抽象依据resolveResultSet即可,从此日后某些人就不不接触底层的JDBC操作了,而或者专注于要怎样将resultSet转加上业务bean就行了,这或者模板依据模式的威力!

结果输出如下:

某些人把JDBC的有几条步骤分别定义在不同的依据后面 ,意味获取connection、创建statement、执行查询获取resultSet和清理资源是每个业务查询都共用的,或者某些人在QueryTemplate中进行实现,或者一段话子类就能对有有哪些操作进行复用了,而对于将resultSet转化成业务bean的操作某些人定义了或者抽象依据resolveResultSet,子类或者实现resolveResultSet依据即可根据具体的需求将resultSet转加上业务bean了。

接下来某些人写或者客户端测试下:

在上述例子中,想必某些人都见识到模板依据模式的优点了,或者上述模板依据模式的实现有或者局限或者模板是定义在或者抽象类中的,子类还要继承父类不还能否对模板的某些步骤进行定制,而意味Java中只有单继承,这意味子类无法再继承某些类,这是或者缺点。既然Java只有单继承,没办法 某些人使用模板的日后不不说使用继承不就行了?意味你使用的是JDK8或JDK9,没办法 还能否 将模板声明为接口,复用的算法步骤使用default进行声明,或者一段话子类或者实现父接口,或者实现自定义的算法步骤就行了,没办法 一来子类就能继承某些类了。意味你使用的是JDK8以下,没办法 还能否 将定制化的算法步骤作为或者回调函数“传递”给模板类,或者一来就不不继承模板类了,实际上Spring的JdbcTemplate或者使用回调函数的依据实现模板依据模式的,感兴趣的同学还能否 去阅读Spring JdbcTemplate的源码进行学习。

最后,关闭resultSet、statement与connection,并出理 各种异常。

意味实在这篇文章对你有帮助,还能否 扫描下方二维码,关注其他人公众号,获得更多优质文章推送。

其次,还要创建statement。

在删改介绍模板依据模式日后,某些人先引入或者背景进行说明。相信某些人都使用过JDBC操作过关系型数据库,某些人先回忆一下使用JDBC的大致步骤是有哪些。

模板依据模式是居于父类中定义好算法的骨架,而把具体的算法步骤交给子类去实现的有有一种设计模式。模板依据模式还能否 在不改变算法整体骨架的情况表下,对算法的某些步骤进行定制意味对算法的某些步骤进行复用。

导语

或者,将resultSet装加上业务bean。

首先,某些人还要先创建connection,意味从连接池中获取connection。

子类UserQueryTemplate非常简单,或者实现resolveResultSet依据就行了,该依据或者将resultSet转加上或者User对象。

某些人还能否 看过,意味使用JDBC操作数据库一段话,即使是或者简简单单的数据库查询,也还要经过上述有几条步骤,且缺一不可。没办法 有没办法 依据对后面 的某些步骤进行复用呢?某些人再仔细地观察上述JDBC操作的5个步骤,除了第或者步骤是根据具体的数据库查询而定制的之外,某些步骤对于不同的数据库查询而言都在一模一样的。或者某些人还能否 想依据将除了第或者步骤之外的步骤“抽出来”进行复用,第或者步骤然后不同的数据库查询去“定制”就好了,这也或者模板依据的精髓:父类将或者算法的步骤定义好,将并肩的步骤在父类实现以实现复用,而子类或者实现定制化的帕累托图就行了。其好处是一来还能否 实现代码复用,二来还能否 在不改变算法底部形态的前提下自定义算法的某些步骤。