模板方法模式就是把很多相同的业务流程抽象出来,定义一个公用的模板方法,具体的业务类可以复用这个模板方法,但是具体的业务实现可以在不同的实现类中实现,就像简历模板、入会申请书模板类似。该模式封装了不可变的部分,扩展可变部分,在父类中提取了公共的方法,以便子类复用。
我们就用游戏举例子吧,所有的游戏都有游戏开始、游戏进行中,游戏结束这三个过程,但是游戏有篮球,足球,台球等很多种,我们可以把这三个过程提取出来,无论是什么游戏,这三个过程都可以被复用,这三个过程就是模板方法,看代码吧。
创建游戏类。
public abstract class Game {
abstract void start();
abstract void runing();
abstract void end();
//模板方法
public final void play(){
start();//开始游戏
runing();//游戏进行中
end();//游戏结束
}
}
创建具体游戏类,如篮球游戏。
public class Basketball extends Game{
@Override
void start() {
System.out.println("篮球游戏开始");
}
@Override
void runing() {
System.out.println("篮球游戏进行中");
}
@Override
void end() {
System.out.println("篮球游戏结束");
}
}
创建具体游戏类,如足球游戏。
public class Football extends Game{
@Override
void start() {
System.out.println("足球游戏开始");
}
@Override
void runing() {
System.out.println("足球游戏进行中");
}
@Override
void end() {
System.out.println("足球游戏结束");
}
}
创建测试类:
public class MoudleTest {
public static void main(String[] args) {
Game game = new Basketball();
game.play();
System.out.println();
game = new Football();
game.play();
}
}
测试结果:
篮球游戏开始
篮球游戏进行中
篮球游戏结束
足球游戏开始
足球游戏进行中
足球游戏结束