模板方法模式定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结 构即可重定义该算法的某些特定步骤。
有多个子类共有一些方法,且逻辑相同,这种情况下我们可以使用模板方法模式。
以下代码演示模板方法模式简单的实际运用:定义一个抽象类Train:
package com.ldl.cn.TemplateModel;
public abstract class Train {
abstract void buyTicket();
abstract void checkTicket();
abstract void waitTrain();
public final void takeTrain(){
buyTicket();
checkTicket();
waitTrain();
}
}
定义一个具体类Metro继承Train:
package com.ldl.cn.TemplateModel;
public class Metro extends Train{
@Override
void buyTicket() {
System.out.println("First:buy a ticket.");
}
@Override
void checkTicket() {
System.out.println("Second:check the ticket.");
}
@Override
void waitTrain() {
System.out.println("Third:wait the metro.");
}
}
编写测试类:
package com.ldl.cn.TemplateModel;
public class TestTemplatePattern {
public static void main(String[] args) {
Train train = new Metro();
train.takeTrain();
}
}
运行结果:
First:buy a ticket.
Second:check the ticket.
Third:wait the metro.