Viewd times
lambda应用到builder模式
Mar 11, 2020
本文中使用了java8的@FunctionalInterface,对这个不熟悉的同学可以参考我的另一篇文章:
java8-Function-how-to-use
转载:原文链接
程序员经常会遇到灵魂拷问:你有对象吗?
没有,但我可以 new 一个!
1 | public class GirlFriend { |
没问题,老铁!但如果对象的属性太多,咋办?
1 | public class GirlFriend { |
GirlFriend 是很美,但写起来也太麻烦了吧。
说说缺点:实例化和设置属性分开,不好维护;变量名重复写。
这里不再介绍其他 Builder 实现方式,直接祭出最实用的通用Builder:
适用于所有类,不需要改造原来类,不需要 lombok 插件支持。
先看看使用姿势:
1 | public class GirlFriend { |
看到了吗!实例化和属性设置在同一条语句执行,链式操作,一路点点点,清爽!
Talk is cheap, show me the code:
1 | /** |
这个示例最多支持三个参数的设置属性方法,也完全够用了。如果要扩展也很容易,依葫芦画瓢,添加多个参数的Consumer
。
以上内容为转载,下面加上我自己的理解:
设值时Lambda can be replaced with method reference
,可以进行如下简化
1 | GirlFriend girlFriend = Builder.of(GirlFriend::new) |
过去实现接口时可以通过以下两种方式:
- 通过匿名内部类的方式实现接口
- 通过class类implement接口的方式
在java8中可以使用lambda方式来实现接口:
1 | /** |
调用的过程:
这里使用非lambda表达式的方式,方便查看调用过程:
1 | // 1. 首先从main方法的build() 方法触发build |
赶紧用起来把!