Java 中的 Setter 约定(返回 void 或 this)
2022-09-03 13:40:49
我已经写了将近一年的Java,我已经看到了2种不同的约定,人们如何实现他们的设置器。
为了说明这一点,下面是这两个约定的示例。(我也想知道这两个模式的简明名称)
使用第一约定的类,不从其“set”方法返回任何内容。这样:
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);
}
其中哪一个更具可读性/可用性是有争议的。
我的问题是关于这两种模式之间的性能差异。它存在吗?如果是这样,差异有多大,它来自哪里?
如果没有性能差异,哪一个被认为是“更好的实践”?