模板模式
模板模式(Template Pattern),定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构,只是重定义该算法的某些特定步骤。这种类型的设计模式属于行为型模式。
只说这个概念比较抽象,直接来看代码(网上找的):
public abstract class Game {
// 具体方法
public void init() {
System.out.println("init ing");
}
// 抽象方法
abstract void startPlay();
abstract void endPlay();
// 钩子方法
boolean isNeedEnd() {
return true;
}
// 这个应该就是业务逻辑方法
public final void play() {
//初始化游戏
init();
//开始游戏
startPlay();
if (isNeedEnd()) {
//结束游戏
endPlay();
}
}
}
public class Football extends Game {
@Override
void startPlay() {
System.out.println("football game start...");
}
@Override
void endPlay() {
System.out.println("football game end...");
}
}
public class Basketball extends Game {
@Override
void startPlay() {
System.out.println("Basketball game start...");
}
@Override
void endPlay() {
System.out.println("Basketball game end...");
}
}
public class Main {
public static void main(String[] args) {
Game game1 = new Basketball();
game1.play();
Game game2 = new Football();
game2.play();
}
}
// 运行结果
init ing
Basketball game start...
Basketball game end...
init ing
football game start...
football game end...
上述代码简单易懂,定义了Game抽象类,在其中模板方法中定义具体的业务逻辑,而业务逻辑中调用抽象方法,这些抽象方法交给子类来实现。
模板模式的精髓就在于,通过在抽象类中定义具体的执行逻辑,但是每部分执行方法,可以交给子类去定制,从而可以在不改变业务逻辑的基础上,去修改内部实现,从而提高了代码的可维护性。