【发布时间】:2012-03-22 01:17:08
【问题描述】:
在 Java 中,当对象的任何属性发生变化时,对象触发事件的最优雅方式是什么?
我的领域模型有几个对象,比如
class MyClass {
String id;
String name;
Collection<MyThing> mythings= new HashSet<MyThing>();
// more fields...
Date lastUpdated;
//constructor, getters and setters, etc
}
每当任何属性(id/name/mythings)发生变化时,我都需要将 lastUpdated 设置为“今天”。
我更喜欢不是特定于 JDO 的解决方案,并且绝对不希望在数据存储中使用此逻辑(RDBMS 中的自动时间戳列等)。
我可以放
this.lastUpdated = new Date();
在每个 setter 中,或在每个 setter 中触发自定义事件,但这很丑陋且容易出错。
有没有更优雅的解决方案?
【问题讨论】:
-
仅供参考,这听起来与 Java bean 完全一样,您可能需要研究一下。
-
AOP 需要一个接口,除非你要进行字节码增强。我通常不使用模型对象的接口。对于这个用例,我不会推荐 AOP。
标签: java