在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
模板方法(Template Method)包含两个角色:
做饭抽象类:
/**
* 做饭步骤抽象类
*/
public abstract class CookTemplate {
/**
* 定义流程
* 模板方法模式核心
* 父类可以实现某些步骤
* 留一些关键内容给子类
*/
public void cook(){
heating();
addFood();
addSalt();
stirfry();
end();
}
//加热方法
public void heating(){
System.out.println("开火加热....");
}
//添加食物
public abstract void addFood();
//加盐
public abstract void addSalt();
//翻炒
public void stirfry(){
System.out.println("进行翻炒中...");
};
//出锅
public void end(){
System.out.println("出锅了....");
};
}
炒茄子类:
public class StirFriedEggplantCook extends CookTemplate{
@Override
public void addFood() {
System.out.println("加一斤茄子");
}
@Override
public void addSalt() {
System.out.println("加一勺盐");
}
}
测试类如下:
public class TemplateTest {
public static void main(String[] args) {
CookTemplate cookTemplate = new StirFriedEggplantCook();
cookTemplate.cook();
}
}
运行结果如下:
模板方法模式,是由父类定义好操作流程,由子类实现一些关键的步骤,然后调用父类制定好流程的方法。