DDD Использование шаблона спецификации для проверки

Я думаю об использовании шаблона Specification для целей проверки. Трудность заключается в том, как сообщить пользователю, почему какая-то Спецификация не была удовлетворена. Что, если Specification.IsSatisfiedBy()не только вернет значение bool, но и причину сбоя. Это будет выглядеть примерно так:

interface ISpecification
{
  CheckResult IsSatisfiedBy(T candidate);
}

где CheckResultэто:

class CheckResult
{
  public bool IsSatisfied { get; }
  public string FailureReason { get; }
}

В работе Фаулера и Эванса есть концепция Частично Выполненной Спецификации, цель которой является предоставление объяснения, что именно не было удовлетворено. Однако в этом документе он реализован в виде дополнительного метода resterUnsatisfiedBy, который возвращает Спецификацию, которая не была выполнена Кандидатом.

Таким образом, возникает вопрос: при использовании Спецификации для целей проверки, как предоставить пользователю обратную связь о том, что данная Спецификация не удовлетворена? Является ли решение, которое я представил выше, хорошим?

22
задан Markus 11 March 2012 в 22:16
поделиться