[Java]合理封装第三方工具包(附视频)

-1.视频链接

视频版: 视频版会对本文章内容进行详细解释

[Java]合理封装第三方工具包_哔哩哔哩_bilibili

 

0.核心思想

对第三方工具方法进行封装,使其本地化,降低记忆和使用成本

1.背景

在我们的项目中,通常会引用一些第三方工具包,或者是使用jdk自带的一些工具类

例如:

commons-lang3 apache开源工具类库

fastjson 阿里开源操作Json的工具类库

Objects  JDK自带的object对象工具类

File JDK自带的file文件处理类

hutool-all  国内优秀简洁的开源类库

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId>
</dependency>
<dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId>
</dependency>
<dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId>
</dependency>

但是这些工具类库有一个很不好的点,就是需要学习成本,需要记住各种Api方法的名称

比如:

String.valueOf()   LocalDateTime.parse()  Json.from()  CollUtil.isEmpty() ....

因此我们需要合理的对这些第三方进行本地化

比如封装fastJson为JsonHelper 

比如封装File为FileHelper

比如封装Objects为ObjectHelper

2.封装思想

1.统一风格的方法命名

比如转换数据类型的方法 全部是叫:"to" 

2.工具方法的归属

有2种分类方式

第一种分类方式就是根据对象来分类  比如我们想要对String相关的工具方法本地化封装 那么应该把这些封装好的方法 归属到StringHelper中

第二种分类方式是根据行为来分类 比如我们想要封装所有check类型的方法 比如isBlank  isEmpty()  isNotNull()这种方法  那么我们就要单独定义一个CheckHelper类来存储这些方法

3.为什么叫helper而不是叫utils 

因为utils是独立的一个工具类,而helper代表是一整个相关体系,它的后续扩展性更好,比如FileHelper,会搭配更多的file类 比如FileType MyFileSql

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/65308.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu环境 nginx.conf详解(三)

1、nginx.conf 结构详解&#xff1a; http 块&#xff1a;用于配置 HTTP 服务器的相关设置&#xff0c;包括处理 HTTP 和 HTTPS。 stream 块&#xff1a;用于配置 TCP/UDP 代理服务器&#xff0c;适用于需要进行四层负载均衡的情况。 ... # 全局块 events {...} …

AI真的可以“陪伴”吗?

人们普遍渴求陪伴&#xff0c;仅有4.6%的人认为自己的陪伴需求都被满足了&#xff0c;剩下大部分人群都面临着各种各样的社交困境。 “陪伴”有多个层次。最狭义的“陪伴”是在人与人之间发生的&#xff1b;但稍微放宽一些&#xff0c;宠物甚至植物、家具也会让…

Golang 的并发优势

在如今的编程领域&#xff0c;一个程序能够同时处理多个任务的能力非常重要&#xff0c;这就是所谓的并发处理。而 Golang 在并发编程方面表现十分出色&#xff0c;具有很多独特的优势&#xff0c;简直不要太简单。 一、轻量级的协程&#xff08;Goroutine&#xff09; 在传统…

基于cobra开发的k8s命令行管理工具k8s-manager

基于cobra开发的k8s命令行管理工具k8s-manager 如果觉得好用&#xff0c;麻烦给个Star!通用配置1 node 分析所有node的资源情况2 analysis 分析Node节点上的资源使用构成3 image 获取指定namespace的所有镜像地址4 resource 获取指定namespace的所有limit 与 Requests大小5 top…

从零开始C++游戏开发之第七篇:游戏状态机与回合管理

在游戏开发的道路上&#xff0c;状态管理是一个无法绕开的重要课题。尤其是在棋牌类游戏中&#xff0c;游戏的进行需要有条不紊地按照回合推进&#xff0c;同时管理多个游戏状态&#xff0c;如“等待玩家加入”、“游戏进行中”、“结算阶段”等。如何优雅且高效地实现这些逻辑…

USB Hub 检测设备

系列文章目录 xHCI 简单分析 USB Root Hub 分析 USB Hub 检测设备 文章目录 系列文章目录一、引言二、hub_eventshub_port_connect_changeusb_alloc_devusb_set_device_statehub_port_initusb_new_device 一、引言 USB Hub 检测设备 一文中讲到&#xff0c;当有 USB 插入时&…

MySQL从入门到入土---MySQL表的约束 (内含实践)---详细版

目录 引入&#xff1a; null 与not null default&#xff1a; comment列描述 &#xff1a; not null 和 default&#xff1a; zerofill &#xff1a; 主键&#xff1a;primary key 复合主键&#xff1a; 自增长:auto_increment 唯一键&#xff1a;unique key 外键&a…

Redis大Key问题全解析

1. 引言 1.1 什么是Redis大Key&#xff1f; Redis大Key是指单个Key对应的数据量过大&#xff0c;占用过多的内存或导致操作耗时较长的现象。大Key可以是以下几种常见数据类型中的任意一种&#xff1a; String类型&#xff1a;单个字符串的长度过大。List类型&#xff1a;包含…

VIVO Android面试题及参考答案

请重写算法题:求数组的全排列。 思路: 要获取一个数组的全排列,我们可以利用回溯算法。具体来说,回溯算法通过递归的方式逐步生成排列,在每一步都将一个元素加入排列中,然后在下一步递归中排除已选元素,回溯的时候撤销选择,尝试其他可能。 步骤: 递归生成排列: 使…

易语言 OCR 文字识别

一.引言 文字识别&#xff0c;也称为光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;是一种将不同形式的文档&#xff08;如扫描的纸质文档、PDF文件或数字相机拍摄的图片&#xff09;中的文字转换成可编辑和可搜索的数据的技术。随着技…

postgreSql对分钟级的降雨数据进行插值为整小时

postgreSql对分钟级的降雨数据进行插值为整小时 1.SQL语句实现&#xff1a;对分钟级的降雨数据进行插值为整小时2.SQL语句实现&#xff1a;将水库、水文站、水闸按照分钟时间插值到小时 1.SQL语句实现&#xff1a;对分钟级的降雨数据进行插值为整小时 --核查某个小流域的降雨量…

docker如何打包部署springboot的项目

一、将项目打包成jar包&#xff0c;或者war包。 首先&#xff0c;确保已经使用 Maven 或 Gradle 等工具将项目打包成 JAR 文件。如果使用的是 Maven&#xff0c;可以通过以下命令打包&#xff1a; #gradle 构建的项目 gradle build #mvn 构建项目、 mvn clean packege …

【JS】for-in 和 for-of遍历对象的区别

【介绍】 for-in 和 for-of 都是 JavaScript 中用于遍历数据结构的循环语句&#xff0c;但它们的工作原理和适用场景有所不同。特别是它们在遍历对象时的行为是不同的。 【区别】 for-in 遍历对象 for-in 是用于遍历对象的 可枚举属性的键名&#xff08;属性名&#xff09;…

GraalVM完全指南:云原生时代下使用GraalVM将Spring Boot 3应用转换为高效Linux可执行文件

一、前言 在现代软件开发中,启动速度和资源利用率常常是衡量应用性能的关键指标。对于基于Spring Boot的应用来说,虽然它们易于开发和部署,但JVM的启动时间有时会成为一个瓶颈。本文介绍如何使用GraalVM将Spring Boot 3应用编译成原生Linux可执行文件,从而显著提高启动速度…

Word批量更改题注

文章目录 批量更改批量去除空格 在写文章的时候&#xff0c;往往对图片题注有着统一的编码要求&#xff0c;例如以【图 1- xx】。一般会点击【引用】->【插入题注】来插入题注&#xff0c;并且在引用的时候&#xff0c;点击【引用】->【交叉引用】&#xff0c;并且在交叉…

基于SpringBoot的蜗牛兼职网的设计与实现

一、项目背景 随着社会的快速发展&#xff0c;计算机的影响是全面且深入的。人们生活水平的不断提高&#xff0c;日常生活中人们对蜗牛兼职网方面的要求也在不断提高&#xff0c;需要兼职工作的人数更是不断增加&#xff0c;使得蜗牛兼职网的开发成为必需而且紧迫的事情。蜗牛…

shardingsphere分库分表项目实践5-自己用java写一个sql解析器+完整项目源码

前1节我们介绍了 shardingsphere 分表分库的sql解析与重写&#xff1a; shardingsphere分库分表项目实践4-sql解析&重写-CSDN博客 那么shardingsphere sql 解析底层究竟是怎么实现的呢&#xff0c;其实它直接用了著名的开源软件 antlr . antlr 介绍&#xff1a; ANTLR&a…

光谱相机与普通相机的区别

一、成像目的 普通相机&#xff1a;主要目的是记录物体的外观形态&#xff0c;生成人眼可见的、直观的二维图像&#xff0c;重点在于还原物体的形状、颜色和纹理等视觉特征&#xff0c;以供人们进行观赏、记录场景或人物等用途。例如&#xff0c;拍摄旅游风景照片、人物肖像等…

【Linux】Linux中用户信息相关的配置文件:/etc/passwd、/etc/group、/etc/shadow、/etc/sudoers

1 用户信息 1.1 /etc/passwd linux上用户的信息保存在/etc/passwd中&#xff0c;看文件名会以为这里保存的是用户密码&#xff0c;但实际上用户密码保存在另一个文件中。 /etc/passwd文件中每行保存一个用户的信息&#xff0c;例如&#xff1a; root:x:0:0:root:/root:/bin…

TiDB 的MPP架构概述

MPP架构介绍&#xff1a; 如图&#xff0c;TiDB Server 作为协调者&#xff0c;首先 TiDB Server 会把每个TiFlash 拥有的region 会在TiFlash上做交换&#xff0c;让表连接在一个TiFlash上。另外 TiFlash会作为计算节点&#xff0c;每个TiFlash都负责数据交换&#xff0c;表连接…