模板方法模式(Template Method Pattern )的定义:定义一个操作中的算法骨架,将一些步骤延迟到子类中,使子类不改变一个算法的结构即可重新定义该算法的某些特定步骤。
考虑这样的场景:你要造房子,首先你要有地基,还要有砖块,有搬运工,泥水匠等,你要造一个房子,前途要完成很多东西,抽象成我们的java类,一个house对象的产生需要很多前期准备,如果每个因素分为一个方法,那么如何是代码看起来更加美观呢?造房子无非上述的流程,对,我这里可以做抽象,具体的实现留给子类。模仿方法模式从此引出。
代码是最直观的语言:
public abstract class AbsPopulator {
public final void dataInitialing() throws Exception {
//获得所有pulic方法
Method[] method = this.getClass().getMethods();
for(int i=0,size=method.length;i<size;i++) {
if(isInitDataMethod(method[i])) {
method[i].invoke(this);
}
}
}
public boolean isInitDataMethod(Method method) {
return method.getName().startsWith("init")
&&Modifier.isPublic(method.getModifiers())
&&method.getReturnType().equals(Void.TYPE)
&&!method.isVarArgs()
&&!Modifier.isAbstract(method.getModifiers());
}
}
哈哈,不错的代码,学习了哈~