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

模板模式

时间:2020-06-25 19:58:28      阅读:49      评论:0      收藏:0      [点我收藏+]

标签:start   art   rtp   loading   模板   mamicode   结构   com   over   

一. 结构图

技术图片

 

 模板方法一般置为final,可以被子类继承,但不能覆盖。

二. 代码实现。

public abstract class Game {
   abstract void initialize();
   abstract void startPlay();
   abstract void endPlay();
 
   //模板
   public final void play(){
 
      //初始化游戏
      initialize();
 
      //开始游戏
      startPlay();
 
      //结束游戏
      endPlay();
   }
}


public class Cricket extends Game {
 
   @Override
   void endPlay() {
      System.out.println("Cricket Game Finished!");
   }
 
   @Override
   void initialize() {
      System.out.println("Cricket Game Initialized! Start playing.");
   }
 
   @Override
   void startPlay() {
      System.out.println("Cricket Game Started. Enjoy the game!");
   }
}

public class Football extends Game {
 
   @Override
   void endPlay() {
      System.out.println("Football Game Finished!");
   }
 
   @Override
   void initialize() {
      System.out.println("Football Game Initialized! Start playing.");
   }
 
   @Override
   void startPlay() {
      System.out.println("Football Game Started. Enjoy the game!");
   }
}


public class TemplatePatternDemo {
   public static void main(String[] args) {
 
      Game game = new Cricket();
      game.play();
      System.out.println();
      game = new Football();
      game.play();      
   }
}

 三. 应用场景

(1)算法的总体步骤固定,但其中个别部分易变时,这时候可以使用模板方法模式,将容易变的部分抽象出来,供子类实现。
(2)多个子类存在公共的行为时,可以将其提取出来并集中到一个公共父类中以避免代码重复。
(3)当需要控制子类的扩展时,模板方法只在特定点调用钩子操作,这样就只允许在这些点进行扩展。

模板模式

标签:start   art   rtp   loading   模板   mamicode   结构   com   over   

原文地址:https://www.cnblogs.com/shijianchuzhenzhi/p/13192459.html

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