先看代码:
package com.ceshi13; 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 num1,int num2); public int[] split(String exp,String opt){ String array[] = exp.split(opt); int arrayInt[] = new int[2]; arrayInt[0] = Integer.parseInt(array[0]); arrayInt[1] = Integer.parseInt(array[1]); return arrayInt; } }
package com.ceshi13; public class Plus extends AbstractCalculator { @Override public int calculate(int num1, int num2) { return num1 + num2; } }
package com.ceshi13; public class StrategyTest { public static void main(String[] args) { String exp = "8+8"; AbstractCalculator cal = new Plus(); int result = cal.calculate(exp, "\+"); System.out.println(result); } }
运算结果:
上面抽象类的代码中有calculate方法,是可以通过不同的子类继承并且重写的,这就相当于模版
定义了模版,至于具体是怎么子的通过子类实现