1、定义:
模板方法模式在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
2、Demo:
[Java] 纯文本查看 复制代码 package template;
/**
* 场景:初始化界面--》进入游戏--》分配路线--》放各自的技能--》残血回城(可选)
*
* LOL模板方法类
* @author TongWei.Chen
* @date 2017年1月25日12:02:11
*/
public abstract class AbstractLOLTemplate {
public final void play() {
init();
coming();
selectLine();
releaseSkill();
if(hook()) {
goHome();
}
}
protected final void init() {
System.out.println("初始化界面....");
}
protected final void coming() {
System.out.println("进入游戏....");
}
protected abstract void selectLine();
protected abstract void releaseSkill();
protected final void goHome() {
System.out.println("残血回城....");
}
/**
* 钩子
* @return
*/
protected boolean hook() {
return true;
}
}
package template;
public class LOLYaSuo extends AbstractLOLTemplate {
@Override
protected void selectLine() {
System.out.println("我亚索,走中单!");
}
@Override
protected void releaseSkill() {
System.out.println("亚索秀技能....");
}
}
package template;
public class LOLDeMa extends AbstractLOLTemplate {
@Override
protected void selectLine() {
System.out.println("我德马,走上单!");
}
@Override
protected void releaseSkill() {
System.out.println("德马秀技能....");
}
@Override
protected boolean hook() {
return false;
}
}
package template;
public class TestLOL {
public static void main(String[] args) {
LOLYaSuo ys = new LOLYaSuo();
ys.play();
LOLDeMa dm = new LOLDeMa();
dm.play();
}
}
输出结果:
初始化界面....
进入游戏....
我亚索,走中单!
亚索秀技能....
残血回城....
初始化界面....
进入游戏....
我德马,走上单!
德马秀技能.... |