假设您有一个可以跨多个对象执行某些操作的业务逻辑方法。也许您想调用一个彩票号码挑选网络服务,为从列表中选择的每个人调用一次。在 Java 中,代码可能如下所示:
Set<Person> selectedPeople = ... // fetch list of people
for ( Person person : selectedPeople ) {
String lotteryNumber = callLotteryNumberWebService( person );
// ...
}
请注意,彩票号码 Web 服务可能会产生副作用,例如记录此人已请求彩票号码(可能会向他们的帐户收费),因此即使 Web 服务调用对一个人失败,也可能对其他人成功。此信息(彩票号码)将需要反馈到更高级别(视图)。
如果这是发生单个操作的情况,则业务逻辑方法可以返回单个值(例如,彩票号码)或抛出带有任何失败细节的异常。但是对于批量操作,有可能一些操作成功而一些操作失败。
这似乎是许多应用程序中都会出现的一种问题,应该有一种干净的方法来处理它。那么,将这种类型的信息从业务逻辑层反馈到应用程序中的另一层(如视图)的最佳方式是什么,最好是以可重用于不同类型的数据和操作的通用方式?