Tôi đang nghĩ đến việc sử dụng mẫu Đặc tính cho mục đích xác thực. Điều khó khăn là làm thế nào để nói cho người sử dụng tại sao một số đặc điểm kỹ thuật không hài lòng. Nếu như Specification.IsSatisfiedBy()
sẽ không chỉ trả về giá trị bool
, mà còn là lý do thất bại. Nó sẽ giống như thế này:DDD Sử dụng mẫu Đặc điểm kỹ thuật để xác thực
interface ISpecification<T>
{
CheckResult IsSatisfiedBy(T candidate);
}
nơi CheckResult
là:
class CheckResult
{
public bool IsSatisfied { get; }
public string FailureReason { get; }
}
Trong Fowler & Evans việc có một khái niệm về Đặc điểm kỹ thuật một phần hài lòng mà mục đích là để cung cấp lời giải thích chính xác những gì là không hài lòng. Tuy nhiên trong tài liệu đó, nó được triển khai làm phương thức bổ sung remainderUnsatisfiedBy trả về Đặc điểm kỹ thuật không được thực hiện bởi Ứng viên.
Vì vậy, câu hỏi đặt ra là: Khi sử dụng Đặc điểm kỹ thuật cho mục đích xác thực, cách cung cấp phản hồi cho người dùng mà một Đặc điểm kỹ thuật nhất định không hài lòng? Là giải pháp tôi đã trình bày ở trên tốt?
Trước hết, bạn có thực sự chắc chắn rằng Đặc điểm kỹ thuật là con đường để đi không? Ý tôi là, mỗi đặc điểm kỹ thuật có biết bối cảnh nơi một mô hình có thể có hoặc không hợp lệ không? Tôi không thể nói nhiều vì tôi không biết tên miền trông như thế nào. Đối với một số xác nhận đơn giản, tôi nghĩ rằng đó là ok, nhưng đó là những gì DataAnnotation xác nhận thuộc tính đang làm ngay bây giờ. – MikeSW