当功能内部一部分实现是确定的,一部分实现是不确定的,这时可以把不确定的部分用抽象方法描述,具体实现留到子类。
package exer;
public class TemplateTest {
public static void main(String[] args) {
SubTemplate t=new SubTemplate();
t.spendTime();
}
}
abstract class Template{
//计算某段代码执行所需要花费的时间
public void spendTime(){
long start=System.currentTimeMillis();
this.code();
long end=System.currentTimeMillis();
System.out.println(end-start);
}
public abstract void code();
}
class SubTemplate extends Template{
public void code(){
for(int i=2;i<=1000;i++){
boolean isFlag=true;
for(int j=2;j<=Math.sqrt(i);j++){
if(i%j==0){
isFlag=false;
break;
}
}
if(isFlag){
System.out.println(i);
}
}
}
}