模板方法模式(TemplateMethod):定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板方法模式Demo:
/**
* 2018年3月28日下午7:53:45
*/
package com.Designpattern;
/**
* @author xinwenfeng
*
*/
public class TestTemplateMethod {
/**
* @param args
*/
public static void main(String[] args) {
MyCookTemplate template;
template = new TomatoSoup();
template.cook();
System.out.println("==============================");
template = new DoFish();
template.cook();
}
}
abstract class MyCookTemplate{
public void cook(){
prepareFood();
makeFire();
doCook();
stopFire();
finishCook();
}
public abstract void prepareFood();
private void makeFire() {
System.out.println("-生火");
}
public abstract void doCook();
public abstract void finishCook();
private void stopFire() {
System.out.println("-停止生火");
}
}
class TomatoSoup extends MyCookTemplate{
@Override
public void prepareFood() {
System.out.println("洗好西红柿,搅好蛋黄汤,准备好佐料。");
}
@Override
public void doCook() {
System.out.println("熬西红柿汤,撒上蛋黄汤搅拌,加上佐料。");
}
@Override
public void finishCook() {
System.out.println("用大碗盛出来。");
}
}
class DoFish extends MyCookTemplate{
@Override
public void prepareFood() {
System.out.println("洗鱼,除鳞,去内脏,准备佐料。");
}
@Override
public void doCook() {
System.out.println("放入鱼,放入佐料,慢火熬制。");
}
@Override
public void finishCook() {
System.out.println("用长碟子盛出来。");
}
}结果:

本文通过一个烹饪示例详细介绍了模板方法模式的实现原理及其应用场景。该模式允许在不改变算法结构的情况下重新定义算法的某些步骤。
1165

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



