基本介绍:
模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 T模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.
1. 模板方法模式是基于继承的代码复用基本技术,模板方法模式的结构和用法也是面向对象设计的核心之一。在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法实现放在不同的子类中。
示例代码:
package org.brando; /** * * 类说明: 测试类 * @author Brando 2018年3月29日 下午2:03:59 */ public class Launcher { public static void main(String[] args) { AbstractGame football = new Football(); football.play(); System.out.println(""); AbstractGame basketball = new Basketball(); basketball.play(); } }
package org.brando; /** * * 类说明: 基础游戏. * @author Brando 2018年5月17日 下午3:20:21 */ public abstract class AbstractGame { /** * * 方法说明: 初始化游戏 * @author Brando 2018年5月17日 下午3:22:38 */ public abstract void initialize(); /** * * 方法说明: 开始游戏 * @author Brando 2018年5月17日 下午3:22:48 */ public abstract void startPlay(); /** * * 方法说明: 结束游戏 * @author Brando 2018年5月17日 下午3:22:54 */ public void endPlay() { System.out.println("游戏结束.."); } /** * * 方法说明: 模板方法, 规定游戏步骤. * @author Brando 2018年5月17日 下午3:22:06 */ public final void play() { // 初始化游戏 initialize(); // 开始游戏 startPlay(); // 结束游戏 endPlay(); } }
package org.brando; /** * * 类说明: 足球 * @author Brando 2018年5月17日 下午3:23:40 */ public class Football extends AbstractGame { @Override public void initialize() { System.out.println("初始化足球游戏..."); } @Override public void startPlay() { System.out.println("开始足球游戏..."); } }
package org.brando; /** * * 类说明: 篮球 * @author Brando 2018年5月17日 下午3:23:40 */ public class Basketball extends AbstractGame { @Override public void initialize() { System.out.println("初始化篮球游戏..."); } @Override public void startPlay() { System.out.println("开始篮球游戏..."); } }