虽然继承一向恶评如潮,专家们都提倡多用接口,少用抽象类继承。但继承在模板方法模式中的成功应用确实有目共睹的。
/*
* 抽象类
*/
Public static class FollowupManagement{
Public static Boolean validationForm();
Public Boolean saveResult(){
If(validationForm()){
Save();
}
}
}
/*
* 具体类
*/
public class DietaryEvaluation{
public Boolean calidationForm(){
//…..省略具体业务处理
}
}
值得一提的是,用过JUnit 测试工具的朋友应该都清楚,JUnit 中的TestCase 以及它的子类就是一个模板方法模式的例子。在TestCase 抽象类中通过模板方法已经设置了测试流程,如先执行Setup 方法初始化测试前提,再运行测试方法,然后再TearDown 来取消测试设置。Setup 、TearDown 中的操作我们一无所知,但是,我们可以在我们继承TestCase 的子类中实现我们自己的测试方法!