Я моделирую модель предметной области в моем приложении. Очевидно, что некоторые из объектных отношений являются ассоциациями, но эти ассоциации также имеют атрибуты. Например:
Foo может иметь один-много баров. Однако ассоциация имеет атрибуты, например диапазон дат, в течение которого эта ассоциация действительна. Итак, способ, которым я это сделал, выглядит следующим образом:
public interface Association<S, T> {
public S getSource();
public T getTarget();
}
Тогда для чего-то подобного выше:
public class FooToBarAssociation implements Association<Foo, Bar> {
public Foo getSource();
public Bar getTarget();
public Date getFromDate();
public Date getToDate();
}
Тогда класс Foo имеет:
private List<FooToBarAssociation> associations;
Мои вопросы:
Это подходящий способ моделирования ассоциации с атрибутами?
Где должна быть бизнес-логика для добавления / удаления ассоциаций в Foo? Создание FooToBarAssociation иногда требует немного бизнес-логики, и мне интересно, должно ли это обрабатываться в FooService, который затем вызывает setAssociations, а не находится в объекте модели. Я всегда слышал, чтобы бизнес-логика как можно больше скрывалась от объектов модели.