模板方法设计模式精髓:IOC控制反转,即子类重写父类希望子类重写的方法,然后父类调用该方法。通俗讲,父亲有个愿望没有实现,于是将希望寄托给他的儿子实现,儿子遵循父亲的设定的目标,实现该愿望,父亲借着儿子为自己实现的愿望来满足自己的欲望。
类图如下:
android中使用模板模式:
父类View:
public class View{
/**
* 钩子操作,空实现
*/
protected void onDraw(Canvas canvas) {
}
/**
*钩子操作,空实现
*/
protected void dispatchDraw(Canvas canvas) {
}
//算法骨架
public void draw(Canvas canvas) {
if (!verticalEdges && !horizontalEdges) {
// 步骤1
if (!dirtyOpaque) onDraw(canvas);
// 步骤2
dispatchDraw(canvas);
// 步骤3
onDrawScrollBars(canvas);
return;
}
}
//... ...
}
子类MyView重写父类中的一些方法:
public class MyView extends View {
public MyView(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
}
@Override
protected void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
}
}