如果 setter 方法不仅仅是设置值,我应该在 setter 方法前面加上 "set" 吗?



例如,我有一个简单的POJO类,它具有一些属性。我的setter所做的更多工作是通知类中的属性更改侦听器触发属性更改事件。在这种情况下,他们是不是制定者?我应该给他们起个名字吗?还是加上这个评论就足够了?一些示例代码:

/**
 * This is a special setter which uses property change support.
 * @param engineerOnDue engineer
 */
public void setEngineerOnDue(String engineerOnDue) {
    propertyChangeSupport.firePropertyChange("engineerOnDue", this.engineerOnDue, this.engineerOnDue = engineerOnDue);
}

这一切都取决于您希望提供给客户的API。通常情况下,客户端不需要知道该方法的实现,所以如果集合名称涵盖了流行趋势:只需使用它即可。

除了封装,这也是使用JavaBeans setter的主要原因:每次属性更改时都能触发事件。这绝对应该是一个二传手。

阅读有关JavaBeans的Java教程。您要做的是在您的bean中定义一个绑定属性

不,这仍然是一个setter。在公共字段上使用getter/setter方法的全部好处是,它们允许您做的不仅仅是设置字段。它还向类的调用方隐藏内部,使您可以随心所欲地更改功能,而不用担心破坏代码的其他部分。

如果你和你的团队对此感到满意,那就顺其自然吧。我会创建两个方法,一个是简单的setter,另一个是设置属性(无论如何都会调用setter)。除非您不能拆分操作,因为它们必须一起发布。

POJO不就是一个存储值的容器吗?也许您应该从您的用例中激发该事件,而不是从POJO。。。

你甚至不必考虑这个setter是否应该被称为setter。

IMHO使用getters/ssetters而不是公共方法的全部目的是允许您在属性更改时执行操作。所以继续。我甚至不会告诉客户我在那里做其他事情,这不关他的事。
但请永远不要在那里执行耗时的任务(数据库检查、网络访问):用户会合理地期望setter速度快。

最新更新