?
?
这个是模拟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; // } //});
?