为更新对象的方法定义返回类型的以下两种方法有什么区别? (void vs Foo)
第一个:
void updateSomeFields(final Foo foo){
foo.setBar(fancyProcessing(foo.getBar())); // and more
}
第二个:
Foo updateSomeFields(final Foo foo){
foo.setBar(fancyProcessing(foo.getBar())); // and more
return foo;
}
这些方法都没有在Foo中定义。
基于Andy Turner在fluent interfaces(面向对象的API,旨在提供更易读的代码)的领导,它回答:
在方法2中定义本地Foo是否有意义? 局部变量声明是语法糖,因为人类在深层嵌套方法调用时遇到困难。
方法级联(具体方法链接)用于中继后续调用的指令上下文很有用,但是在这个问题的范围内,Foo本身外面的方法可能返回类型既不是Foo也不是void但是包含助手班。
答案 0 :(得分:2)
您的方法No.2使得在单个语句中设置多个属性变得更加容易
比如self
等等
我更喜欢Approach2,因为它提供了额外的灵活性
<强>更新强>
这个原则违反了Java Bean规范,因此Bar.setFoo(foo).setFoo1(foo1)
和其他JSP's
内容可能会破坏
流畅的接口通常通过使用方法级联(具体方法链接)来中继后续调用的指令上下文来实现