美文网首页
2_15.模板模式Template Pattern

2_15.模板模式Template Pattern

作者: RockyLuo_290f | 来源:发表于2019-01-03 13:34 被阅读0次
//抽象模板

abstract class AbstractTemplate{
    //必须要实现的业务方法
   public abstract void abstractMethod();

   //可以实现也可以不实现的方法
  public void hookMethod(){
  }

  //必须不能被重写的方法 
  public final void concrateMethod(){
  }
  
  //模板方法, 供其他类来使用
  public void templateMethod(){
    hookMethod();
    abstractMethod();
    concrateMethod();
  }

}

//具体模板
class ConcrateTemplate extends AbstractTemplate{
    //实现抽象方法
    public void  abstractMethod(){
      //实现具体的业务逻辑
    }
}

举例如下:

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

//实现模板后的类1
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!");
   }
}

//实现模板后的类2
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();      
   }
}

相关文章

网友评论

      本文标题:2_15.模板模式Template Pattern

      本文链接:https://www.haomeiwen.com/subject/azpezftx.html