域驱动设计 – DDD使用规范模式进行验证
发布时间:2020-12-14 04:30:22 所属栏目:百科 来源:网络整理
导读:我正在考虑使用规范模式进行验证。很难的是如何告诉用户为什么一些规范不满足。如果Specification.IsSatisfiedBy()不仅返回bool值,还会导致失败,该怎么办?它看起来像这样: interface ISpecificationT{ CheckResult IsSatisfiedBy(T candidate);} CheckRe
我正在考虑使用规范模式进行验证。很难的是如何告诉用户为什么一些规范不满足。如果Specification.IsSatisfiedBy()不仅返回bool值,还会导致失败,该怎么办?它看起来像这样:
interface ISpecification<T> { CheckResult IsSatisfiedBy(T candidate); } CheckResult是: class CheckResult { public bool IsSatisfied { get; } public string FailureReason { get; } } 在Fowler & Evans工作中,有一个部分满意的规范的概念,其目的是提供什么是不满意的。然而,在该文档中,它被实现为附加的方法remainingUnsatisfiedBy,它返回由候选者未完成的规范。 所以问题是:当使用规范进行验证时,如何向用户提供给定规格不满意的反馈?上面提到的解决方案好吗?
虽然您可以使用规范类进行验证,但我建议您将其作为您域内的单独概念。您可能会发现,您需要重新使用相同的底层规范,但需要根据目的和上下文返回不同的“失败原因”。详见
this article。
上面引用的帖子的作者也亲切地分享了github的代码,并将代码发布为NCommon。特别审查这些领域: 规格:https://github.com/riteshrao/ncommon/tree/v1.2/NCommon/src/Specifications 验证:https://github.com/riteshrao/ncommon/tree/v1.2/NCommon/src/Rules(特别是ValidationResult和ValidationError的类) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |