码迷,mamicode.com
首页 > 其他好文 > 详细

模板方法

时间:2018-06-06 22:12:58      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:image   模板方法   结构   做什么   图片   子类   final   钩子方法   crete   

  • 定义:定义一个操作中的算法框架,而将这些步骤延迟到子类中,使得子类不改变一个算法的结构即可重新定义算法的某些步骤

技术分享图片

 

  • 在模板方法模式中有如下角色:
    • AbstractClass:抽象类,定义了一套算法框架
    • ConcreteClass:具体实现类
  • 模板方法的简单实现
    • 模板方法实际上就是封装固定的流程,像模板一样,第一步做什么,第二步做什么,都在抽象类中定义好。子类可以有不同的算法实现,在算法框架不被修改的前提下实现某些步骤的算法替换
    • 创建抽象类
      public abstract class Game {
          public final void play() {
              init();
              start();
              if (hook()) {
      
                  end();
              }
      
              saowei();//钩子方法,基类空实现,子类视情况决定是否实现
          }
      
          private void saowei() {
          }
      
          protected abstract void init();
      
          protected abstract void start();
      
          protected abstract void end();
      
          protected boolean hook() {
              return true;
          }
      }
      

        

    • 具体实现类
      public class AGame extends Game {
          @Override
          protected void init() {
              System.out.println("AGame::init()");
          }
      
          @Override
          protected void start() {
              System.out.println("AGame::start()");
          }
      
          @Override
          protected void end() {
              System.out.println("AGame::end()");
          }
      
          @Override
          protected boolean hook() {
              System.out.println("not execute AGame::end()");
              return false;
          }
      }
      

        

模板方法

标签:image   模板方法   结构   做什么   图片   子类   final   钩子方法   crete   

原文地址:https://www.cnblogs.com/endian11/p/9146383.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!