多态的应用:模板方法设计模式(TemplateMethod)

118 阅读1分钟

多态的应用:模板方法设计模式(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();
  }
}