基于组合的方式实现模板设计:
class="java" name="code">/**
 * 基于组合实现模板设计模式
 * @author Administrator
 *
 */
public class CombineTemplate {
	//链接数据库
	public void beginConnection(){
		System.out.println("conn success");
	}
	//关闭数据库的链接
	public void closeConnection(){
		System.out.println("close success");
	}
	/**
	 * 调用方法,传入一个钩子函数的接口
	 */
	public void execute(CallBack back){
		this.beginConnection();
		back.doInTemplate();
		this.closeConnection();
	}
	/**
	 * 将要实现的方法创建在模板中
	 * 添加
	 */
	public void add(final int id){
		this.execute(new CallBack(){
			public void doInTemplate() {
				System.out.println("add:"+id);
			}});
	}
	
	/**
	 * 删除
	 * @param id
	 */
	public void delete(final int id){
		execute(new CallBack(){
			public void doInTemplate() {
				System.out.println("delete:"+id);				
			}});
	}
}
回调(钩子):
package com.svse.combinetemplate;
/**
 * 接口
 * @author Administrator
 *
 */
public interface CallBack {
	public void doInTemplate();
}
具体的实现类:
package com.svse.combinetemplate;
/**
 * 基于组合实现设计模式,实现具体的功能
 * @author Administrator
 *
 */
public class ExtendCombineTemplate {
	
	private CombineTemplate ct = new CombineTemplate();
	
	public void add(int id){
		ct.add(id);
	}
	
	public void delete(int id){
		ct.add(id);
	}
}