У меня проблема, с которой я пытаюсь работать. У меня есть некоторые объекты модели, которые я хотел бы отслеживать, если их свойства меняются. Из схемы использования этих моделей, я предпочел бы отслеживать, чтобы быть самодостаточным, что выполнены следующие работы:Отслеживать грязные свойства с аннотациями в Java?
Student student = new Student();
student.setName = "name";
List<StudentProperties> changedProperties = student.getChangedProperties();
//changedProperties = { StudentProperties.name }
Мой первый инстинкт должен был создать внутренний HashMap и свойство перечисления затем отслеживать изменения, модификации сеттеры для обновления hashmap. Я не поклонник, потому что это не общий, поэтому я не могу использовать одну реализацию для всех своих моделей.
Есть чистое решение по линии этого:
@TrackChanges
public class Student implements Trackable {
@Track
private String name;
public List<StudentProperties> getChangedProperties() {
//somehow return changed properties
}
}
Где с помощью аннотаций создается свойства перечислимого типа, наряду с картой, содержащей свойства, которые могут быть возвращены getChangedProperties().
Я открыт для использования наблюдаемого шаблона, однако я не уверен, как это будет работать с клиентами модели (должен ли я заставить их также следовать шаблону наблюдателя, прежде чем они смогут использовать мою модель? Звучит навязчиво и, следовательно, я не в пользу этого).
Благодаря
ARE YOU используя Java SE? Если нет, вы можете использовать [перехватчики] (http://docs.oracle.com/javaee/6/tutorial/doc/gkhjx.html). –
Я использую EE, поэтому теперь я посмотрю на перехватчики. – Chaos
Это требует, чтобы все клиенты добавляли перехватчик в файл beans.xml. Если я смогу сделать это самодостаточным, это будет предпочтительнее. – Chaos