【设计模式】模板设计模式

99 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

Java模板模式

1 Java模板模式的介绍

在模板模式中,抽象类公开了定义的方法/模板来执行它的方法。 它的子类可以根据需要重写方法实现,但调用的方式与抽象类定义的方式相同。 此模式属于行为模式类别。

2 Java模板模式的好处

  • 重用代码是非常普遍的技术,这只是它的主要好处。

3 Java模板模式的用法

  • 当应通过避免重复将子类之间的公共行为移至单个公共类中时使用。

4 Java模板模式的UML

在这个实现实例中,将创建一个Game抽象类,它定义了一个模板方法设置为final的操作,因此它不能被覆盖。 Cricket 和 Football 是扩展Game并覆盖它的方法的具体类。

TemplatePatternDemo是一个演示类,将使用Game演示使用模板模式。

4900d91d858bf741d13d67b29b1fc5e1.jpg

5 Java模板模式的案例

5.1 创建一个模板方法为final的抽象类

Game.java:

/**
 *@Autho:“tengteng”
 */
public abstract class Game {
   abstract void initialize();
   abstract void startPlay();
   abstract void endPlay();

   //template method
   public final void play(){

      //initialize the game
      initialize();

      //start game
      startPlay();

      //end game
      endPlay();
   }
}

5.2 创建扩展上述类的具体类

Cricket.java:

/**
 *@Autho:“tengteng”
 */
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!");
   }
}

Football.java:

/**
 *@Autho:“tengteng”
 */
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!");
   }
}

5.3 使用游戏的模板方法

TemplatePatternDemo.java:

/**
 *@Autho:“tengteng”
 */
public class TemplatePatternDemo {
   public static void main(String[] args) {

      Game game = new Cricket();
      game.play();
      System.out.println();
      game = new Football();
      game.play();
   }
}

5.4 输出结果

Cricket Game Initialized! Start playing.
Cricket Game Started. Enjoy the game!
Cricket Game Finished!

Football Game Initialized! Start playing.
Football Game Started. Enjoy the game!
Football Game Finished!