我在我的應用程序中建模域模型。顯然,某些對象關係是關聯的,但這些關聯也具有屬性。例如:我應該如何建模類之間的關聯
美孚可以有一對多的酒吧。但是,該關聯具有屬性,例如該關聯有效的時間範圍。所以,我這樣做的方法如下:
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