模板方法设计模式精髓: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);
}
}
本文介绍了模板方法设计模式的核心概念及其实现方式,并通过Android中View类的具体示例,展示了如何利用该模式进行子类扩展,同时保持父类的算法骨架不变。

1539

被折叠的 条评论
为什么被折叠?



