Template method pattern 模板方法模式。
它是多态技术的一种应用。代码如下,
abstract class MyTemplate{
abstract void step1();
abstract void step2();
abstract void step3();
/**
* 这就是模板。被子类共用。
*/
final void TemplateMethod(){
step1();
step2();
step3();
}
}
子类(略)。
所有子类会共用模板方法。不同子类对抽象方法的实现不同,但大的蓝图并未改
变。战役的方式不同,战略并未受到影响。或者说,大的战略制定下来,小的战
役你们自己看着办就行。
架子是怎么搭起来的?架子就是这么搭起来的。架构师是做什么的?架构师就是
搭架子的人。
常说的I call you 而不是 You call me 就表现于此。子类的编写者不用考虑去
调用某个算法方法,只需要关注实现自己的方法,自然就会被更高一级的方法调
用。
模板方法也可以看是个大的算法架子,算法的具体步骤被子类来实现。
Stragegy模式也是跟算法有关的模式,这里比较它们一下。
Stragegy模式是做一件事情有多种算法实现,这种被实现推迟到子类里实现。
Template模式是算法已经确定,而实现步骤的细节被推迟到子类里实现。
Strategy 代码如下,
interface Strategy {
int execute(int a, int b);
}
class Context {
private Strategy strategy;
// Constructor
public Context(Strategy strategy) {
this.strategy = strategy;
}
public int executeStrategy(int a, int b) {
return strategy.execute(a, b);
}
}