模板方法模式-Template Method
模板方法模式是指:一个抽象类中,有一个主方法(一般为final),再定义其他抽象的或是具体的方法,由主方法来调用这些方法,然后定义其子类,重写其抽象方法,通过调用抽象类,实现对子类的调用
先定义一个抽象的计算器类:
1 public abstract class AbstractCalculator { 2 3 public final int calculate(String exp,String opt){ 4 int array[] = split(exp,opt); 5 return calculate(array[0],array[1]); 6 } 7 8 abstract public int calculate(int a,int b); 9 10 public int[] split(String exp,String splitor){ 11 String array[] = exp.split(splitor); 12 if(array.length != 2) 13 throw new RuntimeException("error"); 14 15 int arrayInt[] = new int[2]; 16 arrayInt[0] = Integer.parseInt(array[0]); 17 arrayInt[1] = Integer.parseInt(array[1]); 18 return arrayInt; 19 } 20 }
加法类:
1 public class Plus extends AbstractCalculator { 2 3 @Override 4 public int calculate(int a,int b) { 5 return a + b; 6 } 7 }
减法类:
1 public class Minus extends AbstractCalculator { 2 3 @Override 4 public int calculate(int a, int b) { 5 return a - b; 6 } 7 }
测试类:
1 public class Main { 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 = "8-8"; 10 cal = new Minus(); 11 result = cal.calculate(exp, "-"); 12 System.out.println(result); 13 } 14 }
程序执行结果:
16 0
模板方法即是:在类本身无法实现或者各子类有不同的实现方式时,将方法抽象化暴露给子类去实现。