Spring整合JDBC模板方法设计模式之基于组合的实现

本文介绍Spring框架中JDBC模板方法设计模式的组合式实现,通过创建通用模板类MyJdbcTemplate并配合自定义接口MyCallback,实现了数据库操作的统一处理,包括连接开始与结束的标准化流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring整合JDBC模板方法设计模式之基于组合的实现


模板设计模式指的是将相应的模板方法提取出来在一个专门的一个位置定义,然后把相同调用过程的操作通过模板实现。
对于模板设计模式,一般有2中方式
1.基于继承的方式实现
2.基于组合的方式实现

前面实现了:1.基于继承的方式实现 ,Spring整合JDBC模板方法设计模式之基于继承的实现

接下来实现:2.基于组合的方式实现

Spring整合JDBC模板方法设计模式之基于组合的方法在我们有大量类的情况下使用特别方便。

此实现模拟了Spring中的org.springframework.jdbc.core.的JdbcTemplate 类。


在1的基础上创建模板类:MyJdbcTemplate,详细描述见代码。

package org.oms.spring.template;

public class MyJdbcTemplate {
	private void beginConnection() {
		System.out.println("begin connection!");
	}

	private void closeConnection() {
		System.out.println("close connection!");
	}

	/**
	 * 调用方法,传入一个钩子函数的接口
	 */
	public void execute(MyCallback callback) {
		beginConnection();
		callback.doInTemplate();
		closeConnection();
	}

	/**
	 * 将所有要实现的方法都创建在模板中 参数修改问相应的对象
	 */
	public void add(final Object object) {
		execute(new MyCallback() {

			@Override
			public void doInTemplate() {
				System.out.println("add " + object);

			}
		});
	}

	public void delete(final int id) {
		execute(new MyCallback() {

			@Override
			public void doInTemplate() {
				System.out.println("delete " + id);
			}
		});
	}

	public void update(final Object object) {
		execute(new MyCallback() {

			@Override
			public void doInTemplate() {
				System.out.println("update " + object);

			}
		});
	}
}

创建接口MyCallback

package org.oms.spring.template;

public interface MyCallback {
	
	public void doInTemplate();
	
}

修改1中的类MyJdbcTemplateByIn:
package org.oms.spring.template;

/**
 * 基于组合的实现模板设计模式
 * 
 * @author sunlight
 *
 */
public abstract class MyJdbcTemplateByIn {
	
	private MyJdbcTemplate mt=new MyJdbcTemplate();
	
	public void add(Object object){
		mt.add(object);
	}
	
	public void delete(int id){
		mt.delete(id);
	}
	
	public void update(Object object){
		mt.update(object);
	}
	
	public abstract void run();

	/**
	 * 在模板方法中有一种函数叫做钩子函数,钩子函数的作用是让实现类通过一些方法来控制模板中的流程
	 * 
	 * @return
	 */
	public abstract boolean isLog();

}

MessageDao.java 类和 RoleDao.java 类不变,具体参考1的实现。

测试类及结果:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值