这在某种程度上是一个设计问题。我正在使用装饰器模式来处理横切关注点。这些担忧之一是验证。我见过的大多数例子都是这样的:
IAccount account = new AccountValidator(new Account());
account.Deposit();
验证器的实现类似于:
if (!IsValid)
throw new NotValidException();
过于简单,但希望你能明白。
我的印象是这是不好的做法(我可能是错的,这真的是我问题的核心 - 这是不好的做法吗?)这个案例并不是一个例外。这是一个相当典型且可以理解的用户输入错误。
但是,我知道如何避免这种情况的唯一方法是设计我的所有服务方法以返回某种包含响应数据的标准化对象。因此,例如 account.Deposit() 返回一个 IResponse,它由许多可能的类实现,例如 NotValidResponse : IResponse...
想法?