gpt4 book ai didi

java - Java 中的 Setter 约定(返回 void 或 this)

转载 作者:搜寻专家 更新时间:2023-10-30 19:40:33 25 4
gpt4 key购买 nike

我编写 Java 已经将近一年了,我看到了人们实现 setter 的两种不同约定。

为了说明这一点,这里有两个约定的例子。 (我也很想知道这两种模式的简明名称)

使用第一约定的类,从它们的“设置”方法中不返回任何内容。像这样:

public class Classic{
private double _x;
private double _y;
public Classic(){
x = 0;
y = 0;
}
public void setX(double d){//or boolean with a type check on input
x = d;
}
public void sety(double d){
y = d;
}
}

使用替代约定的类从它们的 setter 方法中返回它们自己。像这样:

public class Alternative{
private double _x;
private double _y;
public Alternative(){
x = 0;
y = 0;
}
public Alternative setX(double d){
x = d;
return(this);
}
public Alternative sety(double d){
y = d;
return(this);
}
}

不同之处在于使用替代方法语法,例如

Alternative NewAlt(double x,double y){
return(new Alternative()
.setX(x)
.setY(y));
}

是可能的,而对于经典设置,相同的工厂方法会看起来像这样。

Classic NewAlt(double x,double y){
Classic temp = new Classic();
temp.setX(x);
temp.setY(x);
return(temp);
}

其中哪一个更具可读性/可用性是值得商榷的。

我的问题是关于这两种模式之间的性能差异。它存在吗?如果是这样,差异有多大,差异从何而来?

如果没有性能差异,哪一个被认为是“更好的做法”?

最佳答案

Method chaining在某些情况下可能看起来不错,但我不会过度使用它。正如另一条评论中提到的,它确实在构建器模式中被大量使用。在某种程度上,这可能是个人喜好的问题。

在我看来,方法链的一个缺点是调试和断点。单步执行充满链式方法的代码可能很棘手 - 但这也可能取决于 IDE。我发现调试的能力绝对重要,所以我通常会避免在调试时让我的生活变得更难的模式和片段。

关于java - Java 中的 Setter 约定(返回 void 或 this),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29868971/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com