简介
模板方法模式(Template Method Pattern):定义一个操作中的算法的框架,而将一些步骤延迟到子类中。模板方法允许子类在不改变算法结构的情况下重新定义算法的某些步骤。模板方法模式属于行为型模式,主要使用Java的继承机制来实现。
模板方法,顾名思义就是一个模板,按照模板做事,模板方法里封装了方法的执行步骤,调用方只需要通过调用模板就能按照正确的顺序把事情做好。
package com.java.design.template.method;
/**
* 提供模板方法
*
* @author liyongfu
*/
public abstract class AbstractTemplate {
/**
* 数据校验模板:保存前方法校验
*/
protected abstract void check();
/**
* 数据回写模板:保存后数据回写
*/
protected abstract void fillBack();
/**
* 数据保存
*/
public void save() {
check();
defaultSave();
fillBack();
}
protected void defaultSave() {
System.out.println("父类数据保存");
}
}
package com.java.design.template.method;
/**
* @author liyongfu
*/
public class UserDao extends AbstractTemplate {
/**
* 重写模板方法:保存前方法校验
*/
@Override
protected void check() {
System.out.println("子类数据保存前校验");
}
/**
* 重写模板方法:保存后数据回写
*/
@Override
protected void fillBack() {
System.out.println("子类数据保存后回写");
}
}
测试客户端
package com.java.design.template.method;
/**
* @author liyongfu
*/
public class ClientTest {
public static void main(String[] args) {
UserDao dao = new UserDao();
dao.save();
}
}
控制台打印
子类数据保存前校验
父类数据保存
子类数据保存后回写