我在我的应用程序中建模域模型。显然,某些对象关系是关联的,但这些关联也具有属性。例如:我应该如何建模类之间的关联
美孚可以有一对多的酒吧。但是,该关联具有属性,例如该关联有效的时间范围。所以,我这样做的方法如下:
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而不是在模型对象中。我一直听说尽可能保持模型对象的biz逻辑。
不会将模型对象中的业务逻辑导致贫血域模型?这是可取的吗? – 2010-03-09 23:31:42
当你正在建模时,贫血模型是很好的,当你编程时是坏的。为了说清楚,使用贫血模型,您可以轻松使用它,在更高级别的抽象层次上对其进行修改。但是,如果您的模型已设置并且只需填充数据,那么业务逻辑应该位于模型对象中,这就是DDD和MVC模型如何工作AFAIK。在该设置中,你甚至不需要单独的Assoc类。 – 2010-03-09 23:47:04