//抽象模板
abstract class AbstractTemplate{
//必须要实现的业务方法
public abstract void abstractMethod();
//可以实现也可以不实现的方法
public void hookMethod(){
}
//必须不能被重写的方法
public final void concrateMethod(){
}
//模板方法, 供其他类来使用
public void templateMethod(){
hookMethod();
abstractMethod();
concrateMethod();
}
}
//具体模板
class ConcrateTemplate extends AbstractTemplate{
//实现抽象方法
public void abstractMethod(){
//实现具体的业务逻辑
}
}
举例如下:
//初始模板
public abstract class Game {
abstract void initialize();
abstract void startPlay();
abstract void endPlay();
//模板
public final void play(){
//初始化游戏
initialize();
//开始游戏
startPlay();
//结束游戏
endPlay();
}
}
//实现模板后的类1
public class Cricket extends Game {
@Override
void endPlay() {
System.out.println("Cricket Game Finished!");
}
@Override
void initialize() {
System.out.println("Cricket Game Initialized! Start playing.");
}
@Override
void startPlay() {
System.out.println("Cricket Game Started. Enjoy the game!");
}
}
//实现模板后的类2
public class Football extends Game {
@Override
void endPlay() {
System.out.println("Football Game Finished!");
}
@Override
void initialize() {
System.out.println("Football Game Initialized! Start playing.");
}
@Override
void startPlay() {
System.out.println("Football Game Started. Enjoy the game!");
}
}
//测试程序
public class TemplatePatternDemo {
public static void main(String[] args) {
Game game = new Cricket();
game.play();
System.out.println();
game = new Football();
game.play();
}
}
网友评论