- package javaapplication5;
- /**
- Template定义:
- 定义一个操作中算法的骨架,将一些步骤的执行延迟到其子类中.
- 使用Java的抽象类时,就经常会使用到Template模式,因此Template模式使用很普遍.而且很容易理解和使用。
- @author dragon
- */
- abstract class Benchmark {
- public int k = 999;
- /**
- * 下面操作是我们希望在子类中完成
- */
- public abstract void benchmark();
- /**
- * 重复执行benchmark次数
- */
- public final long repeat(int count) {
- if (count <= 0) {
- return 0;
- } else {
- long startTime = System.currentTimeMillis();
- for (int i = 0; i < count; i++) {
- benchmark();
- }
- long stopTime = System.currentTimeMillis();
- return stopTime - startTime;
- }
- }
- public void prt(){
- System.out.println("test Benchmark");
- }
- }
- //在上例中,我们希望重复执行benchmark()操作,但是对benchmark()的具体内容没有说明,而是延迟到其子类中描述:
- class MethodBenchmark extends Benchmark {
- public int k = 99;
- @Override
- public void benchmark() {
- for(int i=0;i<100;i++){
- System.out.println("i="+i);
- }
- }
- public void prt(){
- System.out.println("test MethodBenchmark");
- }
- }
- //也许你以前还疑惑抽象类有什么用,现在你应该彻底明白了吧?
- //至于这样做的好处,很显然啊,扩展性强,以后Benchmark内容变化,我只要再做一个继承子类就可以,不必修改其他应用代码.
- public class MethodBenchmark2 extends MethodBenchmark{
- public int k = 9;
- @Override
- public void benchmark() {
- for(int i=0;i<10;i++){
- System.out.println("i="+i);
- }
- }
- public void prt(){
- System.out.println("test MethodBenchmark2");
- }
- public static void main(String args[]){
- Benchmark oper = new MethodBenchmark2();//Benchmark MethodBenchmark
- long duration = oper.repeat(1);
- System.out.println(oper.k);//999
- System.out.println(duration);
- oper.prt();//test MethodBenchmark2
- //关于继承中方法和属性的调用
- //方法:实例中找,找不到再到父类去找,以此类推
- //属性:上溯造型的衍生类中找,找不到再到父类中去找
- }
- }
Java Template模式
最新推荐文章于 2023-06-26 21:44:32 发布