我正在寻找一些常见的约定 - 如果有的话 - 在“计算”时命名属性。 “计算”是指通过调用特定方法设置它们的值。通常,这些属性不会在构造函数中显示为参数,尽管它们可能在其中初始化。
以下是计算年龄的类Person的示例:
public class Person {
Date birthday;
int age;
Person (Date birthday) {
this.birthday = birthday;
age = new Date(new Date().getTime() - birthday.getTime()).getYear();
}
}
答案 0 :(得分:3)
在适当的面向对象设计中,对象具有属性,在稍后阶段,属性被标识为“真实”属性或“派生”属性。
在开发过程中,通常使用getter和setter方法将“真实”属性编码为属性(或者如果它是一个只读属性,如果在你的例子中是一个不假设的人的brithday,那么这只是一个getter方法)是正常的。改变)和衍生的属性只有吸气剂,因此从外部看不到属性的基本性质,这也是适当的OO设计。内部机制对外界是不可见的。
在优化性能期间,可能会决定将派生值实际存储在对象内的变量中,而不是在调用getter时始终计算。
当被调用的源属性之一的setter也应该在派生属性存储在私有变量中时更新。
如果您使用Bean mechanisme发送属性更改事件,请记住在更改其中一个源属性时也触发派生属性的属性更改事件