域驱动设计 – DDD使用规范模式进行验证

前端之家收集整理的这篇文章主要介绍了域驱动设计 – DDD使用规范模式进行验证前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在考虑使用规范模式进行验证。很难的是如何告诉用户为什么一些规范不满足。如果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的类)

原文链接:https://www.f2er.com/javaschema/282138.html

猜你在找的设计模式相关文章