-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
710bbd6
commit 6d7f91e
Showing
6 changed files
with
256 additions
and
0 deletions.
There are no files selected for viewing
Binary file added
BIN
+292 KB
docs/.vuepress/public/images/article/product/idea-plugin/vo2dto-2.5.5-01.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+446 KB
docs/.vuepress/public/images/article/product/idea-plugin/vo2dto-2.5.5-02.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+207 KB
docs/.vuepress/public/images/article/product/idea-plugin/vo2dto-2.5.5-03.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified
BIN
-7.41 KB
(99%)
docs/.vuepress/public/images/article/zsxq/zsxq-241007-02.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,163 @@ | ||
--- | ||
title: IDEA Plugin vo2dto v2.5.5 | ||
lock: no | ||
--- | ||
|
||
# IDEA Plugin vo2dto —— 这款插件,已经有20k安装量,月增量1000+! | ||
|
||
作者:小傅哥 | ||
<br/>博客:[https://bugstack.cn](https://bugstack.cn) | ||
|
||
>沉淀、分享、成长,让自己和他人都能有所收获!😄 | ||
大家好,我是技术UP主小傅哥。 | ||
|
||
公司明确要求禁止在项目中使用 `BeanUtils.copyProperties` 复制对象,不仅是因为性能问题,更多是这种方式根本不知道有哪些对象属性被转换了。而手动编码 x.set(y.get) 是最稳定可靠处理方式。 | ||
|
||
但如果有几十个属性怎么办😰!那么你可以立即安装这款免费的 vo2dto v2.5.5 版本插件。截止到目前小傅哥开发的这款插件已经有 20.1k 安装量! | ||
|
||
<div align="center"><img src="https://bugstack.cn/images/article/product/idea-plugin/vo2dto-2.5.1-00.png" width="600px"></div> | ||
|
||
IDEA Plugin vo2dto 是一款用于帮助使用 IntelliJ IDEA 编写代码的研发人员,快速生成两个对象转换过程中所需要大量的 `x.set(y.get)` 代码块的插件工具。在最新 v2.5.1 版本中已支持 Lombok.Builder 模式,让使用可丝滑得嘞! | ||
|
||
>文末提供了此插件的源码地址,你可以针对使用优化提交PR,以后那么多人的使用,都会看见你的贡献💐。 | ||
## ✨ 特性 | ||
|
||
1. 2个对象的转换操作,通过复制 X x 对象,转换给 Y y 对象 | ||
2. 允许使用 lombok 对象转换、lombok 和普通对象转换,对于 serialVersionUID 属性过滤 | ||
3. 支持类继承类,全量的对象转换操作 | ||
4. 含记忆功能的弹窗选择映射关系,支持全量对象、支持匹配对象、也支持空转换,生成一组set但无get的对象 | ||
5. 支持对于引入不同包下的同名类处理 | ||
6. 支持 Lombok.Builder 模式创建转换对象 | ||
7. 支持类的内部类对象,进行转换 | ||
|
||
## 👨🏻💻 重构 | ||
|
||
**这次我要说说重构!** | ||
|
||
其实最开始这个项目并不大,简单的建了个抽象模板类定义执行步骤,方法都写在子类里。三下五除二就完成了对象转换功能。 | ||
|
||
但随着小伙伴们不断的提出一些使用诉求后,这里的逻辑变得的复杂了,并且由于本身 IDEA Plugin 的开发,很多时候都要一点点的处理那些对象属性的数据,兼容各种类文件所在的包信息,还有Lombok以及类的内部类。所以,每次维护起来都像是重新写一遍一样。**时间一长,都不认识它了!** | ||
|
||
所以,为了改变这种情况。在 v2.5.5 版本的开发中,做了首次的工程重构,把流水面条的代码,用规则树拆分,让不同的节点实现不同的功能。优雅的效果,如图; | ||
|
||
<div align="center"><img src="https://bugstack.cn/images/article/product/idea-plugin/vo2dto-2.5.5-01.png" width="600px"></div> | ||
|
||
这是一套规则树的模型结构,在 vo2dto 插件开发中的实践使用。关于这块的设计模式可以在这里学习;[https://bugstack.cn/md/develop/design-pattern/2024-08-25-chain-tree.html](https://bugstack.cn/md/develop/design-pattern/2024-08-25-chain-tree.html) | ||
|
||
通过节点功能对逻辑边界的拆解,让每一块功能区都可以显而易见的找到和处理,这样即使是过去很长时间,在看这段代码也能很轻松的知道每一块在干什么。其实代码写的最好的目标就是看代码就像看文档,用类划分边界比只单纯的叠加方法要清晰的多。 | ||
|
||
<div align="center"><img src="https://bugstack.cn/images/article/product/idea-plugin/vo2dto-2.5.5-02.png" width="600px"></div> | ||
|
||
- 重构前:[https://github.com/fuzhengwei/vo2dto/tree/2.5.4](https://github.com/fuzhengwei/vo2dto/tree/2.5.4) | ||
- 重构后:[https://github.com/fuzhengwei/vo2dto/tree/2.5.5](https://github.com/fuzhengwei/vo2dto/tree/2.5.5) | ||
|
||
如果感兴趣这样一个处理,可以进入到重构前后的代码,看看设计模式如何处理的这部分逻辑,怎么拆分的上下文逻辑。可以说非常优雅! | ||
|
||
## 🛠️ 安装 | ||
|
||
### 1. 在线安装 | ||
|
||
| IDEA Plugin 搜索vo2dto直接在线安装即可| | ||
|:---:| | ||
| <div align="center"><img src="https://bugstack.cn/images/article/product/idea-plugin/vo2dto-2.5.5-03.png" width="700px"></div>| | ||
|
||
### 2. 手动安装 | ||
|
||
- 下载:[https://github.com/fuzhengwei/vo2dto/releases/tag/v2.5.5](https://github.com/fuzhengwei/vo2dto/releases/tag/v2.5.5) | ||
- 安装: | ||
|
||
| IDEA Plugin 手动安装,导入下载包 | | ||
|:------------------------:| | ||
| <div align="center"><img src="https://bugstack.cn/images/article/product/idea-plugin/vo2dto-2.5.1-03.png" width="700px"></div> | | ||
|
||
## 🔨 使用 | ||
|
||
- 视频:[https://www.bilibili.com/video/BV13Y411h7fv](https://www.bilibili.com/video/BV13Y411h7fv) - `视频内有完整的使用介绍和插件设计` | ||
- 描述:你需要复制被转换 X x = new X() 中的 X x 部分,无论它是方法入参还是实例化或者是接口回值,接下来鼠标定位到转换对象 Y y 上,可以定位到`类 大Y`、或者`属性 小y`,这样我就可以知道你要做到是X的对象的属性值,转换到Y对象的属性值上。接下来帮你快速生成全部的 `y.set(x.get)` 代码片段。 | ||
|
||
| IDEA Plugin vo2dto 使用演示图| | ||
|:---:| | ||
| <div align="center"><img src="https://bugstack.cn/images/article/product/idea-plugin/vo2dto-2.5.1-04.png" width="700px"></div> | | ||
|
||
```java | ||
import lombok.AllArgsConstructor; | ||
import lombok.Builder; | ||
import lombok.Data; | ||
import lombok.NoArgsConstructor; | ||
|
||
import java.util.Date; | ||
|
||
public class ApiTest { | ||
|
||
/** | ||
* 普通模式 | ||
*/ | ||
public void test_vo2dto01(UserVO user) { | ||
UserDTO userDTO = new UserDTO(); | ||
userDTO.setUserId(user.getUserId()); | ||
userDTO.setUserNickName(user.getUserNickName()); | ||
userDTO.setUserHead(user.getUserHead()); | ||
} | ||
/** | ||
* lombok Builder 模式 | ||
*/ | ||
public void test_vo2dto02(UserVO user) { | ||
UserDTO userDTO = UserDTO.builder() | ||
.userId(user.getUserId()) | ||
.userNickName(user.getUserNickName()) | ||
.userHead(user.getUserHead()) | ||
.build(); | ||
} | ||
|
||
/** | ||
* 类的内部类转换 | ||
*/ | ||
public void test(UserDTO userDTO) { | ||
UserVO.UserVO2 userVO2 | ||
|
||
} | ||
|
||
@Data | ||
@Builder | ||
@AllArgsConstructor | ||
@NoArgsConstructor | ||
static class UserDTO { | ||
|
||
private String userId; | ||
private String userIdx; | ||
private String userNickName; | ||
private String userHead; | ||
private int page; | ||
private int rows; | ||
|
||
} | ||
|
||
@Data | ||
@Builder | ||
@AllArgsConstructor | ||
@NoArgsConstructor | ||
static class UserVO { | ||
|
||
private Long id; | ||
private String userId; | ||
private String userNickName; | ||
private String userHead; | ||
private String userPassword; | ||
private Date createTime; | ||
private Date updateTime; | ||
|
||
} | ||
|
||
} | ||
``` | ||
|
||
- 注意;v2.5.5 版本已支持了 `类的内部类` 模式,如图使用方式即可完成创建过程。 | ||
|
||
## 💐 成长 | ||
|
||
如果你的简历也能有一个这样的小组件,让那么多的程序员👨🏻💻进行使用,那么对你的面试简历来说也是非常亮眼的一笔。 | ||
|
||
包括;这样的组件,还有;OPenAI 代码自动评审、透视业务监控、动态线程池,以及大量的业务项目;大营销平台、小型支付商城、拼团交易等,你都可以跟着小傅哥一起学习。👣 踩在我的肩膀,你能看的更远,走的更快,上的更高! | ||
|
93 changes: 93 additions & 0 deletions
93
docs/md/project/group-buy-market/promotion/group-buy-market-v1.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,93 @@ | ||
--- | ||
title: 新"拼多多"系项目,编码3千行,进度35%,设计模式拉满! | ||
lock: no | ||
--- | ||
|
||
# 新"拼多多"系项目,编码3千行,进度35%,设计模式拉满! | ||
|
||
作者:小傅哥 | ||
<br/>博客:[https://bugstack.cn](https://bugstack.cn) | ||
|
||
>沉淀、分享、成长,让自己和他人都能有所收获!😄 | ||
大家好,我是技术UP主小傅哥。 | ||
|
||
有道理,**不能再做大号的CRUD啦!** 这玩意没成长,面试也没得聊呀!不少伙伴在选择学习项目的时候,没有仔细看对应的项目的架构、设计、模型,一上来就是从头到尾的CRUD串流程,写到最后既没有编程思维的提升,也没有编码能力的积累。所以,面试贼吃亏! | ||
|
||
<div align="center"> | ||
<img src="https://bugstack.cn/images/article/project/business-behavior-monitor/business-behavior-monitor-01.png" width="150px"> | ||
</div> | ||
|
||
**面试官:”我们想要的不是CRUD仔!“** | ||
|
||
能作为面试官的,往往是这个团队里技术不错,级别较高的。这些人面试不只是看你对业务的理解,还包括非常重要的`架构知识`、`模型设计`、`技术技巧`这样内容项的积累。 | ||
|
||
而小傅哥带着大家做项目,也是一直秉承着一贯的高质量项目设计和编码落地。让大家学习时不只是简单的理解业务流程,还包括;怎么拆分业务边界、怎么进行工程建模、怎么驾驭设计模式、怎么处理复杂场景。所以大家学习后的反馈是:`”真爽,就像看爽文一样,每个项目都让我有非常高的提升!”` | ||
|
||
所以,在这次的新项目中,你又会看到不一样的设计模式技巧的运用,来拆解复杂的业务流程。—— 全项目从0到1,全程手把手视频+小册,冲起来非常爽。 | ||
|
||
## 一、类“拼多多”项目 | ||
|
||
本次小傅哥带着大家做的项目,是一个类“拼多多”的《拼团交易平台系统》,这类项目都可以被归类为营销系列系统。在各个互联网公司属于通用类的业务场景,也是流量规模最大,系统最为复杂的系统。所以学习起来收获也是非常大的。 | ||
|
||
<div align="center"> | ||
<img src="https://bugstack.cn/images/article/project/group-buy-market/group-buy-market-1-1-02.png" width="650px"> | ||
</div> | ||
|
||
- 看着页面挺简单,其实服务端一点也不好整。😂 这样一套东西的实现,需要非常好的设计,才能驾驭的了不断的需求迭代。 | ||
- 有时候看到网上简单几行的服务端代码也能实现这样一个类似的流程,不过那东西就是闹玩的小儿科,实际公司里压根不会那么干。学习项目的时候,总得要知道公司里,`真实的业务模型` + `不错的架构设计` + `良好的编码实现`,缺一不可,否则跟没学也差不多。 | ||
|
||
## 二、编码3千行,进度35% | ||
|
||
《拼团交易平台系统》整个项目分为;`系统设计`、`服务实现`、`外部对接`、`开发运维`,目前系统设计3节已完成,服务实现开发了5节。😋 嘿嘿,马上25年的元旦和春节假期来了,又可以嘎嘎往前冲进度了! | ||
|
||
<div align="center"> | ||
<img src="https://bugstack.cn/images/article/project/group-buy-market/group-buy-market-promotion-241229-01.png" width="950px"> | ||
</div> | ||
|
||
- 课程地址:[https://bugstack.cn/md/project/group-buy-market/group-buy-market.html](https://bugstack.cn/md/project/group-buy-market/group-buy-market.html) | ||
- 进度说明:课程于11.11日启动,平均每周更新1节,遇到放假的时候就会加更。基本奔着25年的3-4月交付出一个可运行部署和写简历的版本。现在跟进学习,到时候简历就又有一个新项目啦! | ||
|
||
## 三、不只是完成功能! | ||
|
||
其实每个项目的学习,不只是学个流程,还要学它的系统设计。看看这样一个当前的场景下,做了哪些边界的拆分和功能逻辑的模型处理。从这部分开始才能体现出对项目的深度理解。 | ||
|
||
### 1. 系统建模 | ||
|
||
<div align="center"> | ||
<img src="https://bugstack.cn/images/article/project/group-buy-market/group-buy-market-1-3-03.png" width="950px"> | ||
</div> | ||
|
||
- 项目学习时,在编码前,会进行模型结构的分析「这部分有视频教程」。教大家用面向对象的思维理解系统是如何拆分边界的。 | ||
- 当你有了更高的视角俯视系统,在到后面去开发时,就会有非常爽的编码指引。 | ||
|
||
### 2. 设计模式 | ||
|
||
<div align="center"> | ||
<img src="https://bugstack.cn/images/article/project/group-buy-market/group-buy-market-promotion-241229-02.png" width="600px"> | ||
</div> | ||
|
||
- 每一节功能实现时,会帮大家理解和运用设计模式,让你知道拆分边界的重要性,以及如何做出高质量的编码。 | ||
- 设计模式理解(你可以在这里补充学习,到项目中都是实战):[https://bugstack.cn/md/develop/design-pattern/2024-08-25-chain-tree.html](https://bugstack.cn/md/develop/design-pattern/2024-08-25-chain-tree.html) | ||
|
||
### 3. 工程结构 | ||
|
||
<div align="center"> | ||
<img src="https://bugstack.cn/images/article/project/group-buy-market/group-buy-market-2-3-02.png" width="950px"> | ||
</div> | ||
|
||
- 如工程结构全程视频手把手的教你学习逻辑功能的编码实现,而且这里会运用如模型设计拆分边界并进行编码功能逻辑实现。 | ||
- 注意;编码时会设计出非常合适的模型,拆分功能逻辑边界。有了这些的积累,以后面试可以讲好长时间,在工作中也能运用起来。 | ||
|
||
## 四、加入学习 | ||
|
||
小傅哥的项目是成体系的,有不同的难度进阶。你可以循序渐进的学习,逐步的从小白成长为技术大拿。如图; | ||
|
||
<div align="center"> | ||
<img src="https://bugstack.cn/images/article/zsxq/zsxq-241007-02.png" width="550px"> | ||
</div> | ||
- 首先,这一整套全体系的学习课程比私教培训实惠,更比培训班上万的培训费便宜。也就是培训班1天的💰,就能学习到这一整套内容了。 | ||
- 之后,你学习的整套课程,就是小傅哥这个架构师自己全部原创编写的。这也就是说,你所提到的任何问题,小傅哥都能给你解答和讨论。 | ||
- 那么,这么实惠的课程,成体系的课程,还是架构师编写的。还有什么可犹豫的,完全可以撸起来了! | ||
|
||
> 🧧优惠券,关注小傅哥公众号「码农会锁」回复「星球」获得,数量有限,先到先得! |