我最近开始在 Java 中工作,并被介绍给一切事物的 getter 和 setter 的狂野而疯狂的世界。起初我讨厌它,但很快就习惯了。太习惯了。
最近我花了很多时间来更多地思考班级设计。我正在尝试做的一件事是避免为所有事情做 getter 和 setter 的陷阱。然而,我所做的大部分工作都是处理主要是数据容器的实体,我不确定在这些情况下 getter 和 setter 是否真的不合适。
这是一个使用公共属性的简单示例。
class Space {
public String name;
public String description;
Space(final String name, final String description) {
this.name = name;
this.description = description;
}
}
这是一个使用私有属性并使用 getter 和 setter 的简单示例。
class Space {
private String name;
private String description;
Space(final String name, final String description) {
this.name = name;
this.description = description;
}
public String getName() {
return this.name;
}
public void setName(final String name) {
this.name = name;
}
public String getDescription() {
return this.description;
}
public void setDescription(final String description) {
this.description = description;
}
}
在这些示例中, thename
和description
字段都应该可以更改。
我觉得 getter/setter 示例更清晰,并且隐藏了 whatname
和description
are 的实现细节。如果需要,它还允许稍后在片场进行验证。
我已经阅读了一些关于 getter 和 setter 是邪恶的和/或反模式的讨论,但感觉这些可能不适用于这种情况。
也许有一些我还没有考虑过的选择。我愿意接受建议!