定义:定义一个操作中的算法框架,而将一些步骤延迟到子类中。使得子类可以不改变算法结构的情况重新定义算法的步骤。
优点:封装不变部分,扩展可变部分。行为由父类控制,子类实现。
缺点:子类的执行结果对父类有影响。
抽象模板类:
public abstract class Increment {
/**
* 基本方法
* @return
*/
protected abstract boolean checkIncrement();
protected abstract Object getIncrement();
/**
* 模板方法
*/
public void business(){
if(checkIncrement())
return;
getIncrement();
}
}
具体模板类:
public class MSSqlIncrement extends Increment {
@Override
protected boolean checkIncrement() {
System.out.println("check mssql 增量");
return true;
}
@Override
protected Object getIncrement() {
System.out.println("mssql 增量");
return null;
}
}
public class MySqlIncrement extends Increment {
@Override
protected boolean checkIncrement() {
System.out.println("check mysql 增量");
return false;
}
@Override
protected Object getIncrement() {
System.out.println("mysql 增量");
return null;
}
}
测试示例:
public class Example {
public static void main(String[] args) {
Increment increment=new MySqlIncrement();
increment.business();
increment=new MSSqlIncrement();
increment.business();
}
}