Spring里的模板模式(模板模式和回调混合使用的)_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Spring里的模板模式(模板模式和回调混合使用的)

Spring里的模板模式(模板模式和回调混合使用的)

 2013/12/13 19:09:39  wangzheng1989  程序员俱乐部  我要评论(0)
  • 摘要:这个是模拟Spring里事务管理代码用的一种结合了模板模式,回调模式的用法一个有drive方法的接口packagecom.TemplateSpring;publicinterfaceCar_interface{publicvoiddirver(Stringlocation);}定义模板toHangZhou方法就是核心业务逻辑里面的核心方法drive等到具体执行的时候再来实现packagecom.TemplateSpring;publicclassCar{publicvoidaddGas()
  • 标签:模板 使用 Spring 模式

?

?

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

?

发表评论
用户名: 匿名