模板方法:在定义功能时,功能一部分是确认的,另一部分是不确认的或者后续会变化的。这时可以把不确定的部分暴露出去,定义成抽象类或者接口,由子类来完成。
abstract class GetDuring { public void Gettime() { long start=System.currentTimeMillis(); runcode(); long end=System.currentTimeMillis(); System.out.println(end-start); } public abstract void runcode();//把未知的代码运行函数定义为抽象方法,让子类实现 } class DoGetDuring extends GetDuring //子类继承了父类,有了Gettime和runcode两个方法,但runcode为抽象方法,子类需要复写此方法才能变为非抽象类 { public void runcode() { for (int i=1;i<=1000;i++) { System.out.println(i); } } } class TmDemo { public static void main(String[] args) { DoGetDuring c1=new DoGetDuring(); c1.Gettime();//子类直接调用Gettime方法,Gettime方法会调用子类复写的runcode方法。 } }