1
7
这种技术叫做
method chaining
它的工作原理和你想象的完全一样。您只需返回函数即可
|
2
3
此外,与其构建类总是返回“这个”,还可以使用双括号类实例化HACK,使用普通Java类:
这是一个很好的参考资料-- http://www.c2.com/cgi/wiki?DoubleBraceInitialization |
3
2
那就是
生成器模式
.
|
4
1
|
5
1
这背后的想法是返回一个参考
然后你可以做:
在使用类似于
|
6
1
我一直把这种东西叫做“建筑工人”。 请注意,好的设计往往在末尾有一个.build()调用,以返回正在生成的实例。 正如您所建议的,所有中间方法调用都返回一个生成器对象。如果构建器对象是可变的,并且方法调用正在修改某些内部构建器状态,则可以是“this”。或者,如果builder对象是不可变的,则调用可能每个都返回一个全新的不可变builder对象。 |
7
0
这被称为方法链接,获得这种效果的最简单方法是从每个方法返回对象的当前实例…
…
|
8
0
每个描述方法链接的人都举例说明了实现这一点的一个完全合理的方法,但只有当您的函数不需要返回某些东西时。如果你想退货怎么办? 一个(尽管很差)的解决方案是用一个用于返回的布尔参数重载所有方法。这个参数调用函数,然后返回这个参数。但是,我绝对会推荐构建器模式来代替它。 或者!接受按位参数的函数,选择要执行的函数!(佐格,这是一个糟糕的解决方案!) 还是静止!使用c并创建一个方法,该方法接受委托的参数数组(函数指针),并循环该数组并调用所有委托(甚至更糟!) 这是我唯一能想到的选择。如果你不能做方法链接,去找构建者,或者直接调用它们。或者使用上面三个选项中的一个(但是如果你在这一步中的话,确实会对你的需求的有效性产生疑问)。 |