设计模式之模板方法模式
模板方法模式定义一个操作中的算法骨架,将算法中的具体实现放到子类中,使子类可以不改变算法结构的情况下重新定义该算法的某些特定步骤。
1、定义抽象父类
public abstract class BaseGame { /** * 游戏加载 */ abstract void initialize(); /** * 开始游戏 */ abstract void startPlay(); /** * 游戏结束 */ abstract void endPlay(); public final void play() { initialize(); startPlay(); endPlay(); } }
2、定义子类
public class Football extends BaseGame { @Override void initialize() { System.out.println("Football BaseGame initialized!"); } @Override void startPlay() { System.out.println("Football BaseGame started!"); } @Override void endPlay() { System.out.println("Football BaseGame end!"); } }
public class Cricket extends BaseGame { @Override void initialize() { System.out.println("Cricket BaseGame initialized!"); } @Override void startPlay() { System.out.println("Cricket BaseGame started!"); } @Override void endPlay() { System.out.println("Cricket BaseGame end!"); } }
父类中定义的play()方法就是一个通用方法,每个子类中都直接继承了这个方法。
jdk中juc包下的AQS便是模板方法模式的具体应用。