模板方法模式是指:一個(gè)抽象類中,有一個(gè)主方法(一般為final),再定義其他抽象的或是具體的方法,由主方法來調(diào)用這些方法,然后定義其子類,重寫其抽象方法,通過調(diào)用抽象類,實(shí)現(xiàn)對子類的調(diào)用
- 定義一個(gè)抽象的計(jì)算器類
public abstract class AbstractCalculator {
public final int calculate(String exp,String opt){
int array[] = split(exp,opt);
return calculate(array[0],array[1]);
}
abstract public int calculate(int a,int b);
public int[] split(String exp,String splitor){
String array[] = exp.split(splitor);
if(array.length != 2)
throw new RuntimeException("error");
int arrayInt[] = new int[2];
arrayInt[0] = Integer.parseInt(array[0]);
arrayInt[1] = Integer.parseInt(array[1]);
return arrayInt;
}
}
- 定義加法類
public class Plus extends AbstractCalculator {
@Override
public int calculate(int a,int b) {
return a + b;
}
}
- 定義減法類
public class Minus extends AbstractCalculator {
@Override
public int calculate(int a, int b) {
return a - b;
}
}
- 測試
public class Main {
public static void main(String[] args) {
String exp = "8+8";
AbstractCalculator cal = new Plus();
int result = cal.calculate(exp, "\\+");
System.out.println(result);
exp = "8-8";
cal = new Minus();
result = cal.calculate(exp, "-");
System.out.println(result);
}
}
程序執(zhí)行結(jié)果:
16
0
模板方法即是:在類本身無法實(shí)現(xiàn)或者各子類有不同的實(shí)現(xiàn)方式時(shí),將方法抽象化暴露給子類去實(shí)現(xiàn)。
詳細(xì)代碼戳這里。