首页 > 其他分享 >抽象类在项目中的实际应用

抽象类在项目中的实际应用

时间:2023-08-14 20:24:04浏览次数:33  
标签:应用 abstract List public protected startTime 抽象类 实际

一.抽象类和接口的区别?

1. 接⼝的⽅方法默认是 public ,所有⽅方法在接⼝口中不不能有实现(Java 8 开始接⼝口⽅方法可以有默认实现),⽽而抽象类
可以有⾮非抽象的⽅方法。

2.接⼝口中除了了 static 、 final 变量量,不不能有其他变量量,⽽而抽象类中则不不⼀一定。

3.⼀一个类可以实现多个接⼝口,但只能实现⼀一个抽象类。接⼝口⾃自⼰己本身可以通过 extends 关键字扩展多个接⼝口。

4.接⼝口⽅方法默认修饰符是 public ,抽象⽅方法可以有 public 、 protected 和 default 这些修饰符(抽象⽅方法就是

为了了被重写所以不不能使⽤用 private 关键字修饰!)。

5. 从设计层⾯面来说,抽象是对类的抽象,是⼀一种模板设计,⽽而接⼝口是对⾏行行为的抽象,是⼀一种⾏行行为的规范。

二.项目中抽象类的实际应用

背景:项目以不同方式,如消息队列,读取数据库,调用接口等组合存储数据到数据库,实际上步骤可以抽象出来一套统一的模板。

public abstract class BaseProcessTpData<T, R> {private int intervalDays = 1;

    public int getIntervalDays() {
        return intervalDays;
    }

    public void setIntervalDays(int intervalDays) {
        this.intervalDays = intervalDays;
    }

    public void process(String date) {
        process(date, true);
    }
   //处理过程
    public void process(String date, boolean isDeleteData) {
        long executeCount = 0;
try {
            LocalDateTime startTime = DateTimeUtil.stringToTime(date);
            LocalDateTime endTime = startTime.plusDays(getIntervalDays());
            while (startTime.isBefore(endTime)) {

//获取数据 List<T> list = getDataFromDb(startTime, startTime.plusSeconds(getIntervalSeconds())); if (!CollectionUtils.isEmpty(list)) {
//组装数据 List<R> dbList = convertToDbEntity(list);
//插入数据 insertToDb(dbList); executeCount += dbList.size(); } startTime = startTime.plusSeconds(getIntervalSeconds()); } } catch (Exception ex) { } }
    抽象类中的抽象方法
     * 每次查询间隔时间(单位:秒)
    protected abstract long getIntervalSeconds();

     * 从db获取数据
    protected abstract List<T> getDataFromDb(LocalDateTime startTime, LocalDateTime endTime) throws SQLException;

     * 处理数据
    protected abstract List<R> convertToDbEntity(List<T> list) throws Exception;

     * 插入数据
    protected abstract boolean insertToDb(List<R> list) throws SQLException;

     * 删除数据
    protected abstract int deleteData(String date) throws SQLException;

     * 数据类型
    protected abstract String getDataType();

 

标签:应用,abstract,List,public,protected,startTime,抽象类,实际
From: https://www.cnblogs.com/developS/p/17629637.html

相关文章

  • 智慧工地平台的技术应用:无线传感器、人脸识别和云计算
    智慧工地云平台源码 智慧工地源码智慧工地是指通过信息化技术、物联网、人工智能技术等手段,对建筑工地进行数字化、智能化、网络化升级,实现对施工全过程的实时监控、数据分析、智能管理和优化调控。智慧工地的建设可以提高工地的安全性、效率性和质量,降低施工成本,是建筑行业数字化......
  • 深入解析Spring的IOC与AOP及其在项目中的应用
    推荐阅读「java、python面试题」来自UC网盘app分享,打开手机app,额外获得1T空间https://drive.uc.cn/s/2aeb6c2dcedd4AIGC资料包https://drive.uc.cn/s/6077fc42116d4https://pan.xunlei.com/s/VN_qC7kwpKFgKLto4KgP4Do_A1?pwd=7kbv#https://yv4kfv1n3j.feishu.cn/docx/MRyxdaq......
  • 应用拖拽式表单设计器,实现提效,创造增值价值!
    当前,应用传统的表单制作方式效率低下,满足不了日益繁杂的业务需求。这也让很多用户朋友非常头疼,迫切需要采用理想的办公软件实现高效率发展。在低代码发展时代,可以应用拖拽式表单设计器的优势和功能特点,帮助客户解决这些棘手的问题,从而实现提质增效,创造可观的市场价值。当然,低代码......
  • 线下活动 | 谷歌云 AI:探索人工智能时代 跨境电商的应用趋势
    所有跨境人看过来!AI+跨境电商线下活动,你值得拥有!赶快报名参与吧!主题:谷歌云AI:探索人工智能时代跨境电商的应用趋势时间:8月30日周三13:30——8月30日周三17:30地点:广州番禺报名链接:https://cloud-ace.cn/20230830-guangzhou-offline-event-retail/01.活动流程13......
  • 多功能杆在智慧农业中的应用
    随着农业现代化发展,农业生产和管理不断运用越来越多新技术、新设施,以提高农业生产的综合效率、产品质量,降低管理经营成本。诸如数字化监测、物联网管理、5G远程控制,以及本次我们为大家介绍的多功能智慧杆系统。  多功能智慧杆拥有广泛的场景适用性优点,可以针对市政、街道、......
  • 父子关系旋转应用
    想要让这个转起来,直接设置摄像机不是很好可以设置一个空对象,然后把摄像机的父级设置为空对象把空对象的3D属性打开,修改Y值旋转的时候,摄像机也会跟着旋转......
  • 用uniapp开发打包多端应用完整指南
    一、uni-app项目介绍用uni-app开发多端项目,一套代码可同时打包出各端小程序、h5和app,uni-app支持通过HBuilderX可视化界面和vue-cli命令行两种方式创建项目,下面示例项目采用HBuilderX可视化界面的方式创建,cli项目可参考uni文档,大部分流程都是通用的。项目结构:├──common......
  • 9.0 Python 内置模块应用
    Python是一种高级、面向对象、通用的编程语言,由GuidovanRossum发明,于1991年首次发布。Python的设计哲学强调代码的可读性和简洁性,同时也非常适合于大型项目的开发。Python语言被广泛用于Web开发、科学计算、人工智能、自动化测试、游戏开发等各个领域,并且拥有丰富的第三方库和......
  • 9.0 Python 内置模块应用
    Python是一种高级、面向对象、通用的编程语言,由GuidovanRossum发明,于1991年首次发布。Python的设计哲学强调代码的可读性和简洁性,同时也非常适合于大型项目的开发。Python语言被广泛用于Web开发、科学计算、人工智能、自动化测试、游戏开发等各个领域,并且拥有丰富的第三方库......
  • 天翼云加速落地紫金DPU实践应用,让算力供给更高效!
    近日,以“智驱创新·芯动未来”为主题的第三届DPU峰会在北京成功举办。会上,天翼云凭借紫金DPU在架构革新、算力释放、场景落地等多方面的成果,荣膺“2023芯星品牌奖”,技术实力与品牌影响力再获行业认可。天翼云科技有限公司基础架构事业部高/级产品经理雷晓龙在技术生态论坛发表了题......