模板方法(Template method)模式在Android应用
2010-10-14 06:21:00 来源:本站整理核心提示:@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(new MyView(this));}}这个例子中,MyView实现了基类View的onDraw方法,模
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
}
}
这个例子中,MyView实现了基类View的onDraw方法,该方法是protected,不能被用户调用的。那么谁会调用这个方法呢?如果你仔细研究一下View.java的代码,你就会发现在View的draw方法中调用了onDraw方法。逻辑如下:
public void draw(Canvas canvas) {
.......
onDraw(canvas);
.......
}
由此可见基类View中已经定义好了模板方法,所以派生类中只需要定义onDraw方法在窗口上面画怎么画就可以了。用户调用view对象的模板方法draw方法来绘制窗口。
在Android模板方法有这个很广泛的应用,基本上随处可见。在比如Activity类的onCreate,onStart等方法,都是在基类定义好了模板方法,而这些方法可以理解成派生类具体实现。当在适当条件下,基类根据自己的逻辑调用基类中的这些方法。
我们在做软件的过程中,要多以设计模式的眼光来研究问题,分析问题,对我们分析问题的能力会有一个比较大的提高。
[]
赞助商链接