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();
    }
}
相关推荐
BestAns6 小时前
一文带你吃透 Java 反射机制
java·后端
沐知全栈开发6 小时前
HTML5 浏览器支持
开发语言
wasp5206 小时前
AgentScope Java 核心架构深度解析
java·开发语言·人工智能·架构·agentscope
WHOVENLY6 小时前
【javaScript】- 笔试题合集(长期更新,建议收藏,目前已更新至31题)
开发语言·前端·javascript
2501_916766546 小时前
【Springboot】数据层开发-数据源自动管理
java·spring boot·后端
慌糖6 小时前
流-为序列化解释
开发语言
自在极意功。6 小时前
MyBatis 动态 SQL 详解:从基础到进阶实战
java·数据库·mybatis·动态sql
软件管理系统7 小时前
基于Spring Boot的便民维修管理系统
java·spring boot·后端
LXS_3577 小时前
Day 18 C++提高 之 STL常用容器(string、vector、deque)
开发语言·c++·笔记·学习方法·改行学it