JDBCTemplate框架的CallBack思想体现

最近在看Template框架,虽然说它不怎么用。但是其中的设计思想还是值得学习的。

1.模板方法模式

模板方法模式主要用于对算法或者行为逻辑进行封装,即如果多了个类中存在相似的算法或者行为逻辑,就可以将这些相似的逻辑提取到模板方法类中实现。然后让相应的子类根据需要实现某些自定义的逻辑

在做课设的时候,发现后台的确是很多类似的。
当时我是统一返回sql语句让,然后有两个执行类:
一个是只执行不用管返回结果(用于insert,delete),
另一个是执行要返回数据(用于select)。
这样也算是简单地体现了模板方法模式,后知后觉哈哈。

在只有JDBC API去访问数据库数据时,就会发现,很多代码都是按照一样的流程下来的。
(1).取得数据库连接connection
(2)从connection创建相应的Statement或者PreparedStatement
(3)将SQL语句给Statement或者PreparedStatement 执行
(4)关闭st ,ps
(5)catch 处理访问异常
(6)finally 关闭connection
因此将它们提取到一个模板里头——》得到Template的雏形。

public abstract class Template {

public final Object execute(String sql) {

	Connection con=null;

	Statement st=null;
	try {
		con=驱动器.getConnection();
		
		st=con.createStatement();

		Object reValue=executeWithStatement(st,sql);//得到数据
	}
	catch(SQLException e) {
		
	}
	finally {
		st.close();
		con.close();
	}
}
public abstract Object executeWithStatement(String sql,Statement st);
}

以上的都没什么大不了的,常规的抽象类。
但是接下来,Template用了回调接口,多态。就不用每次用的时候就新增一个类。

CallBack接口与模板方法类关系可以看成服务与被服务的关系,模板方法类想要calllback做事,就要提供相应资源(在这里是通过doInStatement方法公开Statement给callback)
callback使用这些资源做事,完事后,模板方法来处理公开资源,callback只是负责运行sql。
Template里调用execute方法的源码步骤:

①在调用execute方法时,并不是直接执行。而是先创建一个Callback接口。
sql语句成为共享资源——在doInStatement方法里被Callback接口调用.并且跳到②方法里
在这里插入图片描述
②自己想加什么,可以在doInStatement方法里作出修改。在这里插入图片描述
callback是模板类的一个零件,这个零件可以灵活更换。想变成hellokitty还是米老鼠都可以。这样子不影响模板类的模板排布,而且又能根据需求灵活变换。

2.Strategy设计模式

简单来说就是分而治之。
用一个抽象的总Strategy
根据不同的场景,实现不同的子Strategy。
这样,调用Strategy的主体在后期维护也方便,不用一个个地去改。
只要把实现的子Strategy升级或者直接替换成别的Strategy就可以了。

我感觉和Callback思想的区别在于:
callback思想是,同一类型,或是少量的不同类型 被封装好,直接反调用于主体。
而主题往往是已经定下来的模板。为了避免主题过多改动而用调用callback

Strategy设计思想:涉及的类型可能较多一些,尽量避免了过多的if else判断

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值