首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用建造者模式实现链式赋值,代码真清爽

介绍

前段时间写了个项目,一个类的属性那叫一个多啊。刚开始直接写一堆set代码,后来set代码实在是太多了,真心看不下去了,用建造者模式重构了一下,嗯,看起来舒服多了。基本上很多框架中都用到了建造者模式,每个Java程序员也肯定用过建造者模式,只不过你没有意识到这就是建造者模式。

就像你用Collections.sort(List,Comparator)和Arrays.sort(Object[],Comparator)的时候是否意识这就是策略模式的典型实现,通过传入不同的比较器来达到不同的效果。

改造过程

先来演示一下我改造的过程,用了Lombok插件,不会的可以百度一下。

原来的实现

测试类

后来的实现

测试类

全程链式调用,清晰知道每个字段的含义,而且还节省行数,不能太爽。

如何写建造者模式?

直接看最后编译生成的class文件反编译后的内容

我觉得我不用解释你都能看懂这个代码的意思,也就两部分。

1.生成建造者类,给建造者类赋值

2.用建造者类生成想要的类

恭喜你,已经看懂什么是建造者模式了。

Lombok中@Builder注解的使用

如果你的项目中可以用Lombok插件,就不用自己手写建造者类了,直接用@Builder注解即可。如果不可以,仿造上面的类写一个建造者类也是很快的。@Builder注解需要注意的地方有如下几点。

没有继承的情况

上面已经演示了

有继承的情况

1.对于父类,使用@AllArgsConstructor注解

2.对于子类,手动编写全参数构造器,内部调用父类全参数构造器,在子类全参数构造器上使用@Builder注解

在框架中的应用

基本上所有的Java框架都用到了建造者模式,因为链式赋值真的很爽。我Google了一点用了建造者模式的代码,方便大家理解。整体思路一样,可能具体实现略微有点差别。

Guava Cache框架

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190811A0LY0O00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券