`
elite20130514
  • 浏览: 45080 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

读编写高质量代码整理(十一)—反射让模板方法模式更强大

阅读更多

模板方法模式(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());
	}
}

哈哈,不错的代码,学习了哈~ 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics