模板方法模式定义了一个算法的步骤,并允许次类别为一个或多个步骤提供其实践方式。让次类别在不改变算法架构的情况下,重新定义算法中的某些步骤。
我觉得一个例子说的挺好,大意是说父亲有很多理想,就行医救人吧,但是父亲医术不行,只能靠儿子,儿子长大后遵从父亲大志,春风拂面,妙手回春,实现了父亲的理想,儿子做的事情早在出生前就定下来了,是父亲之前久定好的模板。
核心结构
1、抽象模板
2、具体模板
结构图
代码示例:
abstract class Game {
private int playersCount;
abstract void initializeGame();
abstract boolean endOfGame();
abstract void printWinner();
final void playOneGame(int playersCount) {
this.playersCount = playersCount;
initializeGame();
int j = 0;
while (!endOfGame()){
j = (j + 1) % playersCount;
}
printWinner();
}
}
class Chess extends Game {
void initializeGame() {
// ...
}
boolean endOfGame() {
// ...
}
void printWinner() {
// ...
}
}
使用场景:
Andoid VIew 显示步骤:onDraw()、dispatchDraw()、onDrawScrollBars()
拓展连接:
http://www.cnblogs.com/qianxudetianxia/archive/2011/08/09/2131602.html