在设计领域模型时,应该坚持代表问题领域的事物,并且领域模型不应包含审计信息。
所以,如果我要设计一只猫,它可能看起来像这样:
public Cat {
private Color furColor;
private Color eyeColor;
private boolean isDeclawed;
etc...
}
我永远不应该拥有像“updateDate”和“createTime”这样的属性,对吗?
现在,如果 Web 应用程序要在屏幕上显示一张猫的表格,您可能会这样:
Name Eye Color Claws? Last Updated ------ --------- ------ ------------ Fluffy Green No 10/31/2012 etc...
So, if you don't keep the last update time in your domain model, how does one (properly) get that data to the page?
Obviously, I could have a poorly designed domain model, but I want to do it better.
I had considered creating an object that accepts a generic so that I could keep my domain model pristine. i.e.
public PersistableObject<T,K> {
private T domainObject;
private Date updateDate;
private User updateUser;
getters, setters, etc...
}
但是,恐怕我会遇到一些问题。
我对“域模型”和“更新日期”等进行了大量搜索...但我认为我错过了正确的术语。
有人能指出我正确的方向吗?
最佳答案
在你的场景中,我不确定我是否同意第一句话。如果您的域的一般用途包括需要显示这些日期,那么它们可以(并且很可能应该)成为您的普通域对象的一部分。
如果你想清理你的域对象,你可以简单地创建一个接口(interface)来保存那些公共(public)字段。
public interface ITrackedObject
{
DateTime LastUpdated { get; set; }
//etc....
}
public class Cat : ITrackedObject
{
public DateTime LastUpdated { get; set; }
//....
}
关于architecture - 领域对象设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11581715/