多态的应用:模板方法设计模式(TemplateMethod)
抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板, 子类在抽象类的基础上进行扩展、改造,相同的部分放在父类当中,不同的部分写成抽象方法, 由子类去实现,但子类总体上会保留抽象类的行为方式。
解决的问题:
1、当功能内部一部分实现是确定的,一部分实现是不确定的,这时可以把不确定的部分暴露出去,让子类去实现
2、换句话说,在软件开发中实现一个算法时,整体步骤很固定、通用,这些步骤已经在父类中写好了, 但是某些部分易变,易变部分可以抽象出来,供不同子类实现,这就是一种模板模式
abstract class SuperClass{
public void runTime(){
//1、开始时间
long start=System.currentTimeMillis();//获取当前时间到1970年1月1号0时0分0秒所经历的毫秒数
//2、执行代码
this.runCode();//sc.runCode
//3、结束时间
long end=System.currentTimeMillis();
//4、计算时间差
System.out.println("时间差为:"+(end-start));
}
public abstract void runCode();
}
//计算1000以内偶数运行的时间
class Computer2 extends SuperClass{
@Override
public void runCode(){
for(int i=0;i<1000;i++){
if(i%2==0){
System.out.println(i);
}
}
}
}
//计算代码运行的时间
class Computer extends SuperClass{
@Override
public void runCode(){
for(int i=0;i<10000;i++){
System.out.println(i);
}
}
}
//测试
public class TemplateMethodTest {
public static void main(String[] args) {
SuperClass sc=new Computer2();
sc.runTime();
}
}