0

我正在寻找一些通用约定——如果有的话——在“计算”属性时命名属性。“计算”是指它们的值是通过调用特定方法来设置的。通常,这些属性不会作为参数出现在构造函数中,尽管它们可能在其中被初始化。

这是一个 Person 类的示例,其中将计算年龄:

public class Person {

   Date birthday;
   int age;

   Person (Date birthday) {
       this.birthday = birthday;
       age = new Date(new Date().getTime() - birthday.getTime()).getYear();
   }
}
4

1 回答 1

4

在正确的面向对象设计中,对象具有属性,在稍后阶段,这些属性被标识为“真实”属性或“派生”属性。

在开发过程中,“真实”属性被编码为具有 getter 和 setter 方法的属性是正常的(或者如果它是只读属性,例如在您的示例中不应该更改的人的生日,则只是一个 getter 方法)并且派生的属性只有吸气剂,因此从外部看,该属性的基本性质是不可见的,这又是正确的 OO 设计。内部机制对外部世界是不可见的。

在性能优化期间,可能会决定将派生值实际存储在对象内部的变量中,而不是在调用 getter 时始终计算。

当派生属性存储在私有变量中时,被调用的源属性之一的设置器也应该更新派生属性。

如果您使用 Bean 机制发送属性更改事件,请记住在更改源属性之一时也触发派生属性的属性更改事件

于 2013-08-30T14:38:19.427 回答