/**
* 具体模板类 - 打篮球游戏
*/publicclassBasketballextendsGame{@OverridevoidendPlay(){System.out.println("Basketball Game Finished!");}@Overridevoidinitialize(){System.out.println("Basketball Game Initialized! Start playing.");}@OverridevoidstartPlay(){System.out.println("Basketball Game Started. Enjoy the game!");}}
/**
* 具体模板类 - 踢足球游戏
*/publicclassFootballextendsGame{@OverridevoidendPlay(){System.out.println("Football Game Finished!");}@Overridevoidinitialize(){System.out.println("Football Game Initialized! Start playing.");}@OverridevoidstartPlay(){System.out.println("Football Game Started. Enjoy the game!");}}
/**
* 测试模板方法模式
*/publicclassTestTemplate{publicstaticvoidmain(String[] args){Game game =newBasketball();
game.play();System.out.println();
game =newFootball();
game.play();}}
模板方法模式定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。优点:1)封装不变部分,扩展可变部分。2)提取公共代码,便于维护。3)行为由父类控制,子类实现。缺点:每一个不同的实现都需要一个子类来实现,导致类的个数增加,使得系统更加庞大。博客:https://blog.csdn.net/pange1991/article/details/81183122实例:创建一个定义操作的 Game 抽象类,其中,模板方法