NullPointer 发表于 2017-1-25 13:40

模板方法模式

1、定义:
模板方法模式在一个方法中定义了一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。
2、Demo:
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();
        }
}


输出结果:
初始化界面....
进入游戏....
我亚索,走中单!
亚索秀技能....
残血回城....
初始化界面....
进入游戏....
我德马,走上单!
德马秀技能....

幕幽晓寂寂 发表于 2017-1-25 14:09

小白表示这都什么啊~~··

NullPointer 发表于 2017-1-25 14:10

幕幽晓寂寂 发表于 2017-1-25 14:09
小白表示这都什么啊~~··

设计模式之一

qwertyui 发表于 2017-1-25 16:30

看看支持下。

NullPointer 发表于 2017-1-27 17:14

qwertyui 发表于 2017-1-25 16:30
看看支持下。

谢谢,会继续努力的
页: [1]
查看完整版本: 模板方法模式