Answers:
通常,我将使用单独的验证器类来验证每个用例。例如,在将产品添加到数据库之前,我将使用AddProductValidator来验证业务规则,在删除产品之前,我将使用DeleteProductValidator进行验证,等等。可以将通用业务规则提取到规范类(Specification pattern)并由验证器类共享
要构建验证器类,请按以下方法进行:http : //lostechies.com/jimmybogard/2007/10/24/entity-validation-with-visitors-and-extension-methods/
如果您使用.NET,我认为您可能需要考虑Fluent验证(https://github.com/JeremySkinner/FluentValidation)。我认为这很酷,也很接近我上面提到的文章
如前所述,我可能会实现一个option type。这样,我可以返回“ None”或经过验证的值(可能很懒惰),但这是实现的详细信息,并且很好地引出了使用Decorator的想法。
当然,如果界面变得丑陋,我会使用外观。