【发布时间】:2014-12-08 01:10:13
【问题描述】:
我有一个问题正在努力解决。我有一些模型对象,如果它们的属性发生变化,我想跟踪它们。由于这些模型的使用模式,我希望跟踪是独立的,以便以下工作:
Student student = new Student();
student.setName = "name";
List<StudentProperties> changedProperties = student.getChangedProperties();
//changedProperties = { StudentProperties.name }
我的第一个直觉是创建一个内部 hashmap 和属性枚举,然后通过修改 setter 来跟踪更改以更新 hashmap。我不是粉丝,因为它不是通用的,因此我不能为我的所有模型使用一个实现。
是否有一个干净的解决方案:
@TrackChanges
public class Student implements Trackable {
@Track
private String name;
public List<StudentProperties> getChangedProperties() {
//somehow return changed properties
}
}
通过注释创建一个属性枚举,以及包含可由 getChangedProperties() 返回的属性的映射。
我愿意使用可观察模式,但是我不确定这将如何与模型的客户一起使用(我是否必须强制他们也遵循观察者模式才能使用我的模型?听起来侵入性,因此我不赞成它)。
谢谢
【问题讨论】:
-
您使用的是 Java SE 吗?如果没有,您可以使用interceptors。
-
我用的是EE,所以我现在来看看拦截器
-
它要求所有客户端将拦截器添加到 beans.xml 文件中。如果我可以让它自成一体,那就更好了。
标签: java enums annotations