加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

域驱动设计 – 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的类)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读