我正在阅读有关贫血的领域模型是一种反模式的内容,我对此有一些疑问。我有一个数据库,其中三个客户使用,每个客户都有不同的业务规则来将产品插入数据库。因此,如果我使用富域模型,我的代码将是这样的:
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 以及何时抛出一些桌面异常?分开不是更好吗?那么,最后,为什么在我的项目中这种情况下,贫血的领域模型是一种反模式?