Java的抽象类实践-模板设计模式

需求:

1)有多个类,完成不同的任务job

2)要求能够统计得到各自完成任务的时间

最佳实践:

设计一个抽象类(Template),能完成如下功能:

1)编写方法calculateTime(),可以计算某段代码的耗时时间

2)编写抽象方法job()

3)编写一个子类Sub,继承抽象类Template,并实现job方法

4)测试类TestTemplate

java 复制代码
package com.abstract_;

abstract public class Template {//抽象父类
    public void calcuteTime(){
        long start = System.currentTimeMillis();//得到开始的时间
        job();
        long end = System.currentTimeMillis();//得到结束时间
        System.out.println("执行时间为" + (end - start));
    }
    abstract public void job();//抽象方法
}

AA和BB类分别完成两个不同的任务

java 复制代码
package com.abstract_;

public class AA extends Template{
    //计算任务
    //1+...+10000
    public void job(){//实现父类的抽象方法
        int num = 0;
        for (int i = 0; i <= 1000000; i++) {
            num += i;
        }

    }

}
java 复制代码
package com.abstract_;

public class BB extends Template{
    //计算任务
    //1+...+10000
    public void job(){
        int num = 0;
        for (int i = 0; i <= 8000000; i++) {
            num *= i;
        }
    }
}

测试:

java 复制代码
package com.abstract_;

public class TestTemplate {
    public static void main(String[] args) {
        AA aa = new AA();
        aa.calcuteTime();

        BB bb = new BB();
        bb.calcuteTime();
    }
}
相关推荐
workflower13 分钟前
医院核心竞争力的四大重构
人工智能·安全·设计模式·重构·动态规划·scrum
人道领域13 分钟前
【LeetCode刷题日记】131.分割回文串,动态规划优化
java·开发语言·leetcode
z落落25 分钟前
C# 接口 interface (多接口实现、类+接口、成员重名)
java·开发语言
发际线向北31 分钟前
0x05 深入了解JVM虚拟机(JVM方法调用 -Ⅰ)
java
宋哥转AI34 分钟前
学了Spring AI Graph再看LangGraph,发现API几乎一模一样
java·人工智能·agent
AskHarries1 小时前
Workspace:文件系统、项目上下文和执行边界
java·服务器·前端
摇滚侠1 小时前
JavaWeb 全套教程 Servlet 66-74
java·servlet·tomcat·intellij-idea·jar
Solis程序员1 小时前
滑动窗口热键探测与三级缓存设计
java·spring·缓存
好家伙VCC1 小时前
区块链双向支付通道实战:从签名到结算
java·后端·区块链·asp.net
知识的宝藏2 小时前
Xpaht self::div 轴语法
开发语言