zoukankan      html  css  js  c++  java
  • 以玩游戏的方式来理解模版模式

    一、模板类

    /**
     * 玩游戏模式模版
     * @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();
    
        }
    }

    五、结果

  • 相关阅读:
    React 事件机制
    EggJs学习 (一)
    css 选择器及样式属性
    css盒子模型
    ES5 继承方式
    正则表达式
    Flex布局
    npm
    深拷贝、浅拷贝
    Webpack实战(入门、进阶与调优)
  • 原文地址:https://www.cnblogs.com/geekdc/p/11593432.html
Copyright © 2011-2022 走看看