Java模板模式

1 Java模板模式的介绍

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

2 Java模板模式的好处

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

3 Java模板模式的用法

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

4 Java模板模式的UML

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

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

5 Java模板模式的案例

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

Game.java:

/**
 * 一点教程网: http://www.yiidian.com
 */
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:

/**
 * 一点教程网: http://www.yiidian.com
 */
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:

/**
 * 一点教程网: http://www.yiidian.com
 */
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:

/**
 * 一点教程网: http://www.yiidian.com
 */
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!

 

热门文章

优秀文章