登录
注册
开源
企业版
高校版
搜索
帮助中心
使用条款
关于我们
开源
企业版
高校版
私有云
模力方舟
登录
注册
就在本周六,成都站 Gitee Talk | 模力方舟 AI 应用开发沙龙抢占最后席位!聚焦 AI 开发全链路,结识技术同频人~
代码拉取完成,页面将自动刷新
开源项目
>
程序开发
>
常用工具包
&&
捐赠
捐赠前请先登录
取消
前往登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
Watch
不关注
关注所有动态
仅关注版本发行动态
关注但不提醒动态
4K
Star
24.1K
Fork
8.2K
GVP
chinabugotech
/
hutool
代码
Issues
4
Pull Requests
0
统计
流水线
服务
JavaDoc
质量分析
Jenkins for Gitee
腾讯云托管
腾讯云 Serverless
悬镜安全
阿里云 SAE
Codeblitz
SBOM
我知道了,不再自动展开
更新失败,请稍后重试!
移除标识
内容风险标识
本任务被
标识为内容中包含有代码安全 Bug 、隐私泄露等敏感信息,仓库外成员不可访问
【6.0.0】重要变更汇总
已完成
#I6SC4B
Looly
成员
创建于
2023-04-02 23:45
## JDK支持 1. 经过深思熟虑 - JDK 8+ ## 代码变动 1. 包名变更为`org.dromara.hutool` 2. 内部工具类重新整理规整,减少无用模块,工具类归类到对应package中。 3. 被人诟病的http模块做重构,采用门面模式,支持包括HttpUrlConnection、HttpClient4、HttpClient5、OkHttp3等库。 4. 在能力范围之内尽量做性能优化,不跟其他高性能库“攀比”,也欢迎大家提交优化。 5. 相比5.x版本做减法,大部分工作是删掉一些重复代码和无用的重载,使用上可能会增加代码量,但是相比减少了歧义。 ## 设计原则 1. 采用Builder + Util模式重构工具类,XXXUtil只负责封装最常用的方法,有很多自定义选项的工具,不再使用一堆的重载方法,而是使用单独的类完成构建。 - 工具强调的是便捷性,即可应用于大部分场景。 - Builder强调灵活性,可根据使用场景优化,得到更好的性能。 ```java XXX.of(xxx) .setXXX(xxx) .setYYY(yyy) ... .doResult(xxx) ``` 2. 构建一种对象不再使用混乱的`createXXX`、`newXXX`、`ofXXX`等名字,而是统一使用`of`或者`ofXXX`。 3. 工具类命名。 - 按照**类型**命名(名词方式),如`StrUtil`、`ListUtil`等。这种命名的好处是,用户需要什么工具时,只需要知道**我想对什么类型的数据做什么操作**即可,就可以联想到**什么类型的Util中什么操作方法**。 - 按照**作用**命名(动词方式),如`CompareUtil`等。一般是按照**单一职责**原则归类,如不同类型对象共用一些方法,则单独放在一起。 4. 门面模式重度依赖SPI机制,一般有两种创建方式。 - 简单工厂模式,即在一个XXXFactory中即可创建对应实现对象,这个对象称之为`Engine`,这种方式一般在Hutool中定义了Engine接口的情况下,初始化功能都可以在Engine实现类中完成,不需要额外参数,使用简单工厂可创建。 - 工厂方法模式,即每个功能实现,都要有自己的Factory,来创建对应的对象。这种方式一般用于JDK定义的接口或实现对象的创建依赖于参数。 5. 单例对象一般定义为enum类,只有一个元素就是`INSTANCE`。 6. 外部依赖全部使用`<optional>true</optional>`,由用户自行引入和选择版本。这种方式可以保证既不绑架用户强制使用第三方某种库,也可以避免第三方库爆出漏洞而没有即时升级Hutool对用户的影响。Hutool希望始终保持一个**工具**的初心,帮助用户简化和解决问题,而不参与用户选择,就好像你要切菜,给你切菜刀,你要剔骨,给你剔骨刀,但是菜和骨都要你自己买。 ## 文档 1. 确定[vuepress-theme-vdoing](https://doc.xugaoyi.com/)作为文档载体。 2. 文档分为几个部分: - 入门指南,强调工具类的使用 - 最佳实践,强调工具类组合应用,以解决哪类实际问题 - 技术进阶,讨论工具类优化和取舍,即某些工具类为什么这么写。 3. 文档各个模块单独成一个独立文档。
## JDK支持 1. 经过深思熟虑 - JDK 8+ ## 代码变动 1. 包名变更为`org.dromara.hutool` 2. 内部工具类重新整理规整,减少无用模块,工具类归类到对应package中。 3. 被人诟病的http模块做重构,采用门面模式,支持包括HttpUrlConnection、HttpClient4、HttpClient5、OkHttp3等库。 4. 在能力范围之内尽量做性能优化,不跟其他高性能库“攀比”,也欢迎大家提交优化。 5. 相比5.x版本做减法,大部分工作是删掉一些重复代码和无用的重载,使用上可能会增加代码量,但是相比减少了歧义。 ## 设计原则 1. 采用Builder + Util模式重构工具类,XXXUtil只负责封装最常用的方法,有很多自定义选项的工具,不再使用一堆的重载方法,而是使用单独的类完成构建。 - 工具强调的是便捷性,即可应用于大部分场景。 - Builder强调灵活性,可根据使用场景优化,得到更好的性能。 ```java XXX.of(xxx) .setXXX(xxx) .setYYY(yyy) ... .doResult(xxx) ``` 2. 构建一种对象不再使用混乱的`createXXX`、`newXXX`、`ofXXX`等名字,而是统一使用`of`或者`ofXXX`。 3. 工具类命名。 - 按照**类型**命名(名词方式),如`StrUtil`、`ListUtil`等。这种命名的好处是,用户需要什么工具时,只需要知道**我想对什么类型的数据做什么操作**即可,就可以联想到**什么类型的Util中什么操作方法**。 - 按照**作用**命名(动词方式),如`CompareUtil`等。一般是按照**单一职责**原则归类,如不同类型对象共用一些方法,则单独放在一起。 4. 门面模式重度依赖SPI机制,一般有两种创建方式。 - 简单工厂模式,即在一个XXXFactory中即可创建对应实现对象,这个对象称之为`Engine`,这种方式一般在Hutool中定义了Engine接口的情况下,初始化功能都可以在Engine实现类中完成,不需要额外参数,使用简单工厂可创建。 - 工厂方法模式,即每个功能实现,都要有自己的Factory,来创建对应的对象。这种方式一般用于JDK定义的接口或实现对象的创建依赖于参数。 5. 单例对象一般定义为enum类,只有一个元素就是`INSTANCE`。 6. 外部依赖全部使用`<optional>true</optional>`,由用户自行引入和选择版本。这种方式可以保证既不绑架用户强制使用第三方某种库,也可以避免第三方库爆出漏洞而没有即时升级Hutool对用户的影响。Hutool希望始终保持一个**工具**的初心,帮助用户简化和解决问题,而不参与用户选择,就好像你要切菜,给你切菜刀,你要剔骨,给你剔骨刀,但是菜和骨都要你自己买。 ## 文档 1. 确定[vuepress-theme-vdoing](https://doc.xugaoyi.com/)作为文档载体。 2. 文档分为几个部分: - 入门指南,强调工具类的使用 - 最佳实践,强调工具类组合应用,以解决哪类实际问题 - 技术进阶,讨论工具类优化和取舍,即某些工具类为什么这么写。 3. 文档各个模块单独成一个独立文档。
评论 (
378
)
登录
后才可以发表评论
状态
已完成
待办的
进行中
已完成
已关闭
负责人
未设置
Looly
loolly_admin
负责人
协作者
+负责人
+协作者
dazer007
dazer007
负责人
协作者
+负责人
+协作者
CherryRum
henan_is_unique_oldletter
负责人
协作者
+负责人
+协作者
Createsequence
CreateSequence
负责人
协作者
+负责人
+协作者
emptypoint
emptypoint
负责人
协作者
+负责人
+协作者
阿超
VampireAchao
负责人
协作者
+负责人
+协作者
Husky
Husky_jzq
负责人
协作者
+负责人
+协作者
lxSkye
lxSkye
负责人
协作者
+负责人
+协作者
标签
feature
未设置
标签管理
里程碑
未关联里程碑
未关联里程碑
Pull Requests
未关联
未关联
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
未关联
未关联
v5-master
v7-dev
v5-dev
v6-dev
开始日期   -   截止日期
-
置顶选项
不置顶
置顶等级:高
置顶等级:中
置顶等级:低
优先级
不指定
严重
主要
次要
不重要
参与者(8)
Java
1
https://gitee.com/chinabugotech/hutool.git
git@gitee.com:chinabugotech/hutool.git
chinabugotech
hutool
hutool
点此查找更多帮助
搜索帮助
Git 命令在线学习
如何在 Gitee 导入 GitHub 仓库
Git 仓库基础操作
企业版和社区版功能对比
SSH 公钥设置
如何处理代码冲突
仓库体积过大,如何减小?
如何找回被删除的仓库数据
Gitee 产品配额说明
GitHub仓库快速导入Gitee及同步更新
什么是 Release(发行版)
将 PHP 项目自动发布到 packagist.org
评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册