gpt4 book ai didi

java - 在 Java 中使用注释跟踪脏属性?

转载 作者:太空宇宙 更新时间:2023-11-04 14:19:33 24 4
gpt4 key购买 nike

我有一个问题正在努力解决。我有一些模型对象,我想跟踪它们的属性是否发生变化。由于这些模型的使用模式,我希望跟踪是独立的,以便以下工作:

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() 返回的属性的映射。

我愿意使用可观察模式,但是我不确定这将如何与模型的客户端一起工作(我是否必须强制他们也遵循观察者模式才能使用我的模型?听起来具有侵扰性,因此我不赞成它)。

谢谢

最佳答案

我创建了一个名为 AValueObject 的基类,其中包含处理此问题的 DirtyTracker 属性: https://github.com/subes/invesdwin-util#dirtytracker

我还创建了一个 AspectJ 方面来为您处理 PropertyChangeSupport 事件触发:https://github.com/subes/invesdwin-aspects#propertychangesupportedaspect

关于java - 在 Java 中使用注释跟踪脏属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27349912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com