模板設計模式

     在程序開發中你可能經常遇到這種情況,某個要實現的算法分爲多個步驟,有些步驟是固定不變的,有些步驟是不固定的,爲了提高代碼的可擴展性和可維護性,模板設計模式在這種場景下就派上用場了。

    在模板設計模式中,一個算法可以分爲多個步驟,每個步驟對應一個方法稱爲基本方法,步驟的執行順序是在一個模板方法中定義好的,有些基本方法是固定不變的,有些基本方法是不固定的。在模板設計模式中,模板方法和固定不變的基本方法會在父類中實現,而不固定的基本方法在父類中是抽象方法,其實現被延遲到子類中完成。

如上圖所示,在抽象類AbstractClass中Operation_4()方法是固定的基本方法,其實現在父類中。而Operation_2、Operation_3()、Operation_5()是不固定的基本方法,所以在父類中是抽象方法,需要子類去實現。

/***********************************************************************
 * Module:  AbstractClass.java
 * Author:  Administrator
 * Purpose: Defines the Class AbstractClass
 ***********************************************************************/

import java.util.*;


public abstract class AbstractClass {
   
   public void template() {
      // TODO: implement
   }
   
   
   public abstract void operation();
   
   public abstract void operation3();
   
   public void operation4() {
      // TODO: implement
   }
   
   
   public abstract void operation5();

}

 

/***********************************************************************
 * Module:  ConcreteClass1.java
 * Author:  Administrator
 * Purpose: Defines the Class ConcreteClass1
 ***********************************************************************/

import java.util.*;


public class ConcreteClass1 extends AbstractClass {
   
   public void operation() {
      // TODO: implement
   }
   
   
   public void operation3() {
      // TODO: implement
   }
   
   
   public void operation5() {
      // TODO: implement
   }

}

 

/***********************************************************************
 * Module:  ConcerteClass2.java
 * Author:  Administrator
 * Purpose: Defines the Class ConcerteClass2
 ***********************************************************************/

import java.util.*;


public class ConcerteClass2 extends AbstractClass {
   
   public void operation() {
      // TODO: implement
   }
   
   
   public void operation3() {
      // TODO: implement
   }
   
   
   public void operation5() {
      // TODO: implement
   }

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章