【发布时间】:2012-11-17 18:18:26
【问题描述】:
我正在阅读有关贫血的域模型是一种反模式的内容,我对此有一些疑问。 我有一个数据库,其中三个客户使用,每个客户都有不同的业务规则来将产品插入数据库。 因此,如果我使用富域模型,我的代码将是这样的:
public class Product: IValidatableObject
{
public int Id;
public Client Client;
public int ClientId;
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (ClientId == 1)
DoValidationForClientOne();
else if (ClientId == 2)
DoValidationForClientTwo();
else if (ClientId == 3)
DoValidationForClientThree();
}
}
嗯,这很可怕,不是吗? 现在,如果我有一个贫乏的领域模型,我可以简单地创建三个服务层类,其中每个类都包含对一个特定客户端的验证。不好吗?
我的第二个论点是:如果我有一个桌面和一个使用相同富域模型的 Web 应用程序,我怎么知道何时抛出 HttpException 以及何时抛出一些桌面异常?分开不是更好吗? 那么,最后,为什么在我的项目中这种情况下,贫血的领域模型是一种反模式?
【问题讨论】:
-
这不是域模型。那是一个带有验证的 DTO。 blog.gauffin.org/2012/06/protect-your-data
标签: domain-driven-design design-patterns