以玩游戏的方式来理解模版模式
一、模板类
/** * 玩游戏模式模版 * @author DUCHONG * @since 2019-09-26 17:38 **/ public abstract class GameStepTemplate { /** * 共有的方法,不需要子类去实现 */ protected void registQQ(){ System.out.println("注册QQ号成功"); } /** * 初始化游戏 */ abstract void install(); /** * 开始游戏 */ abstract void startPlay(); /** * 结束游戏 */ abstract void gameOver(); /** * 模板方法,子类各自去实现 */ protected final void play(){ this.registQQ(); this.install(); this.startPlay(); this.gameOver(); } }
二、LOL
/** * lol游戏 * * @author DUCHONG * @since 2019-09-26 17:38 **/ public class LOL extends GameStepTemplate { @Override void install() { System.out.println("安装LOL完毕"); } @Override void startPlay() { System.out.println("开始玩5V5排位"); } @Override void gameOver() { System.out.println("对面Penta kill GG 不玩了"); } }
三、CF
/** * 穿越火线游戏 * * @author DUCHONG * @since 2019-09-26 17:41 **/ public class CF extends GameStepTemplate { @Override void install() { System.out.println("安装CF完毕"); } @Override void startPlay() { System.out.println("开始玩CF,运输船模式"); } @Override void gameOver() { System.out.println("一出门就被爆头,GG不玩了"); } }
四、Client
/** * 调用端 * * @author DUCHONG * @since 2019-09-26 17:43 **/ public class Client { public static void main(String[] args) { GameStepTemplate game; game=new LOL(); game.play(); System.out.println("---LOL太难了,整个小号去玩CF---"); game=new CF(); game.play(); } }
五、结果
作者:null-npe 出处:https://www.cnblogs.com/npe 由于作者个人水平有限,如果文中有什么错误,欢迎指出。以免更多的人被误导。 |