基于组合的方式实现模板设计:
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);
}
}