一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。
模板类
public abstract class Game {
abstract void initialize();
abstract void startPlay();
public final void play(){
initialize();
startPlay();
}
}
实现类
public class FootBall extends Game{
@Override
void initialize() {
System.out.println("prepare foot ball");
}
@Override
void startPlay() {
System.out.println("play foot ball");
}
}
public class BasketBall extends Game{
@Override
void initialize() {
System.out.println("prepare basketball");
}
@Override
void startPlay() {
System.out.println("play BasketBall");
}
}
Main
Game game = new BasketBall();
game.play();