需求:每个类都有一个工作任务,要求计算每个类对象的任务工作时间。
分析:计算工作时间的方法应该是每个类中都共有的方法,应该放在父类中。
不同的类有不同的工作,根据实际运行对象实现动态绑定,因此父类中应该包含工作的抽象方法,由子类具体实现。
代码如下:
package template_mode;
public abstract class Template {
protected String workName;
public abstract void job();
public void calculateTime(){
long start = System.currentTimeMillis();
job();//根据实际的运行对象调用具体的方法,实现动态绑定机制
long end = System.currentTimeMillis();
System.out.println(workName+"工作时间为:"+(end-start));
}
public Template(String workName) {
this.workName = workName;
}
}
package template_mode;
public class Work1 extends Template{
public Work1(String workName) {
super(workName);
}
@Override
public void job() {
int num = 0;
for (int i = 0; i < 100000; i++) {
num+=i;
}
}
}
package template_mode;
public class Work2 extends Template{
public Work2(String workName) {
super(workName);
}
@Override
public void job() {
int num = 0;
for (int i = 0; i < 1000; i++) {
num+=i;
}
}
}
package template_mode;
public class Test {
public static void main(String[] args) {
Work1 work1 = new Work1("w1");
Work2 work2 = new Work2("w2");
work1.calculateTime();
work2.calculateTime();
}
}