Похоже, что вы хотите выполнить некоторую операцию с моделью при вызове этого метода (getPropertyValue).Я бы создал карту идентификатора на интерфейсе ModelOperation, определенном следующим образом:
public interface ModelOperation {
void operate(Object value);
}
Тогда карта будет определена следующим образом:
map.put(model.PROPERTY_RENAME, new RenameOperation(model));
Ваш класс расширения будет выглядеть так:
@Override
public Object getPropertyValue(Object id) {
map.get(id).operate(model);
// etc...
}
Например, RenameOperation будет определен следующим образом:
public class RenameOperation implements ModelOperation {
public RenameOperation(Model model) {
// etc...
}
public void operate(Object value) {
model.setName((String)value);
}
}
Это позволяет поддерживать столько операций модели, сколько вам нужно, и означает, что вам не нужно менятькласс расширения, который вы должны написать.Выше просто схема.Вы можете использовать обобщенные значения в реализациях ModelOperation, чтобы избежать приведения значения в каждой из них.