模版方法模式

解釋一下模板方法模式,就是指:一個抽象類中,有一個主方法,再定義1...n個方法,能夠是抽象的,也能夠是實際的方法,定義一個類,繼承該抽象類,重寫抽象方法,經過調用抽象類,實現對子類的調用,先看個關係圖:java

就是在AbstractCalculator類中定義一個主方法calculate,calculate()調用spilt()等,Plus和Minus分別繼承AbstractCalculator類,經過對AbstractCalculator的調用實現對子類的調用,看下面的例子:小程序

[java] view plaincopyide

  1. public abstract class AbstractCalculator {  測試

  2.       

  3.     /*主方法,實現對本類其它方法的調用*/  spa

  4.     public final int calculate(String exp,String opt){  .net

  5.         int array[] = split(exp,opt);  orm

  6.         return calculate(array[0],array[1]);  blog

  7.     }  繼承

  8.       

  9.     /*被子類重寫的方法*/  get

  10.     abstract public int calculate(int num1,int num2);  

  11.       

  12.     public int[] split(String exp,String opt){  

  13.         String array[] = exp.split(opt);  

  14.         int arrayInt[] = new int[2];  

  15.         arrayInt[0] = Integer.parseInt(array[0]);  

  16.         arrayInt[1] = Integer.parseInt(array[1]);  

  17.         return arrayInt;  

  18.     }  

  19. }  

[java] view plaincopy

  1. public class Plus extends AbstractCalculator {  

  2.   

  3.     @Override  

  4.     public int calculate(int num1,int num2) {  

  5.         return num1 + num2;  

  6.     }  

  7. }  

測試類:

[java] view plaincopy

  1. public class StrategyTest {  

  2.   

  3.     public static void main(String[] args) {  

  4.         String exp = "8+8";  

  5.         AbstractCalculator cal = new Plus();  

  6.         int result = cal.calculate(exp, "\\+");  

  7.         System.out.println(result);  

  8.     }  

  9. }  

我跟蹤下這個小程序的執行過程:首先將exp和"\\+"作參數,調用AbstractCalculator類裏的calculate(String,String)方法,在calculate(String,String)裏調用同類的split(),以後再調用calculate(int ,int)方法,從這個方法進入到子類中,執行完return num1 + num2後,將值返回到AbstractCalculator類,賦給result,打印出來。正好驗證了咱們開頭的思路。

相關文章
相關標籤/搜索