1. 概念:定义一个算法的骨架,而将一些实现步骤延迟到子类中。
把不变的行为搬到超类,去除子类中重复的代码来体现他的优势。
2. UML图:

3.代码:
public
abstract class
Templete { private
void beforeOperation() {
System.out.println("This acton before the operation!");
}
private
void afterOperation() {
System.out.println("This acton after the operation!");
}
//需要推迟到子类(实现类) 中执行
protected
abstract void
operation(); public
void topOperation() {
beforeOperation();
operation();
afterOperation();
}
} public
class TempleteImpl extends
Templete { protected
void operation()
{
System.out.println("The operation action is executed in the method of ServiceA instance! ");
}
} public
class TempletTest { public
static void
main(String[] args) {
Templete templete =
new TempleteImpl();
templete.topOperation();
}
} 4.应用场景:
1) 一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。
2) 各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。首先识别现有代码中的不同之处,并且将不同之处分离为新的操作。最后,用一个调用这些新的操作的模板方法来替换这些不同的代码。
本文介绍模板方法设计模式的概念及其实现方式,通过一个具体的Java示例代码展示如何定义算法骨架并将部分实现细节留给子类完成。适用于希望了解并应用此模式避免代码重复的开发者。
483

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



