2014-12-08 1 views
1

У меня проблема, с которой я пытаюсь работать. У меня есть некоторые объекты модели, которые я хотел бы отслеживать, если их свойства меняются. Из схемы использования этих моделей, я предпочел бы отслеживать, чтобы быть самодостаточным, что выполнены следующие работы:Отслеживать грязные свойства с аннотациями в 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().

Я открыт для использования наблюдаемого шаблона, однако я не уверен, как это будет работать с клиентами модели (должен ли я заставить их также следовать шаблону наблюдателя, прежде чем они смогут использовать мою модель? Звучит навязчиво и, следовательно, я не в пользу этого).

Благодаря

+1

ARE YOU используя Java SE? Если нет, вы можете использовать [перехватчики] (http://docs.oracle.com/javaee/6/tutorial/doc/gkhjx.html). –

+0

Я использую EE, поэтому теперь я посмотрю на перехватчики. – Chaos

+0

Это требует, чтобы все клиенты добавляли перехватчик в файл beans.xml. Если я смогу сделать это самодостаточным, это будет предпочтительнее. – Chaos

ответ

Смежные вопросы