Java 模板方法模式

Java设计模式 - 模板方法模式


在模板模式中,父抽象类公开几个抽象方法供子类实现。在父抽象类中有另一个方法或几个方法使用抽象方法来实现业务逻辑。

抽象方法通常用于父类所需的每个步骤。

例如,为了使用新的软件,我们需要下载,安装,配置和运行。如果我们要使用模板模式来编码逻辑,我们将创建一个父类如下。

abstract class UseSoftware{
   abstract void download();
   abstract void install();
   abstract void configuration();
   abstract void run();
   
   public void useNewSoftware(){
     download();
     install();
     configuration();
     run();   
   }
}

对于使用不同的软件,我们只需要从上面的抽象类继承并提供详细的实现。

模板模式是一种行为模式。

例子

abstract class Software {
   abstract void initialize();
   abstract void start();
   abstract void end();
   //template method
   public final void play(){
      //initialize
      initialize();
      //start
      start();
      //end
      end();
   }
}
class Browser extends Software {
   @Override
   void end() {
      System.out.println("Browser Finished!");
   }

   @Override
   void initialize() {
      System.out.println("Browser Initialized!.");
   }

   @Override
   void start() {
      System.out.println("Browser Started.");
   }
}
class Editor extends Software {

   @Override
   void end() {
      System.out.println("Editor Finished!");
   }

   @Override
   void initialize() {
      System.out.println("Editor Initialized!");
   }

   @Override
   void start() {
      System.out.println("Editor Started!");
   }
}
public class Main {
   public static void main(String[] args) {
      Software s1 = new Browser();
      s1.play();
      s1 = new Editor();
      s1.play();    
   }
}

上面的代码生成以下结果。