Java 模板方法模式

2018-01-17 18:49 更新

Java設(shè)計(jì)模式 - 模板方法模式


在模板模式中,父抽象類(lèi)公開(kāi)幾個(gè)抽象方法供子類(lèi)實(shí)現(xiàn)。在父抽象類(lèi)中有另一個(gè)方法或幾個(gè)方法使用抽象方法來(lái)實(shí)現(xiàn)業(yè)務(wù)邏輯。

抽象方法通常用于父類(lèi)所需的每個(gè)步驟。

例如,為了使用新的軟件,我們需要下載,安裝,配置和運(yùn)行。如果我們要使用模板模式來(lái)編碼邏輯,我們將創(chuàng)建一個(gè)父類(lèi)如下。

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

對(duì)于使用不同的軟件,我們只需要從上面的抽象類(lèi)繼承并提供詳細(xì)的實(shí)現(xiàn)。

模板模式是一種行為模式。

例子

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();    
   }
}

上面的代碼生成以下結(jié)果。

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)