?
?
这个是模拟Spring里事务管理代码用的一种 结合了模板模式,回调模式的用法
?
?
? 一个有drive方法的接口?
class="java" name="code">package com.TemplateSpring;
public interface Car_interface {
public void dirver(String location);
}
?
?
?定义模板?
toHangZhou 方法 就是核心业务逻辑
里面的核心方法drive ? 等到具体执行的时候再来实现
package com.TemplateSpring;
public class Car {
public void addGas(){
System.out.println("去加油站加油");
}
public void stop(){
System.out.println("发动机熄火");
}
public void toHangzhou(Car_interface car_inter){
addGas();
car_inter.dirver("杭州");
stop();
}
}
?
?
?
正式执行的时候
Car_interface 作为参数穿进去,传参的时候就把drive方法实现了 先定义核心业务逻辑,方法留到具体执行的时候再来实现 这里体现了模板模式的思想 传入接口参数,传参的时候再实现drive方法,这里类似回调 这种用法介于回调和模板之间,不太好描述,但是spring中大量的使用了这种用法,用起来非常的方便 也降低了耦合度
?
package com.TemplateSpring;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.support.TransactionCallback;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
new Car().toHangzhou(new Car_interface(){
/**
* 这就是spring事务管理所用的模板模式 和原始的模板模式不同,这里业务方法tohangzhou 参数为一个接口,toHangzhou方法调用的是这个接口的drive方法
* 核心方法drive在这个接口中定义
*
* 在toHangzhou的参数列表里要实现接口,就要实现drive方法 在参数列表里对接口做了完整的实现
*
*/
@Override
public void dirver(String location) {
System.out.print("开车去"+location);
}
});
}
}
//这就是spring事务管理 de 模板模式
//this.getTransactionTemplate().execute(new TransactionCallback(){
// public Object doInTransaction(TransactionStatus status){
//
//
// status.setRollbackOnly();
// return status;
// }
//});
?