你的后一个建议怎么样:
for (businessObject : businessObjects) { businessObject.doBusinessLogic() }
我们的想法是将业务逻辑放在业务对象的方法中。您的视图层可以循环遍历所有业务对象,告诉每个业务对象开展业务。每个业务如何处理业务层中业务对象的逻辑。您可以通过从doBusinessLogic方法返回值或通过抛出令人讨厌的事件的异常来处理错误等。
如果您正在进行跨业务对象逻辑(即,对多个业务对象进行操作的逻辑),那么您可以构建一个businessObjectManager类,该类可以具有接收一个或多个业务对象并对其进行操作的方法。因此,通过将管理器对象放在业务层中,您仍然可以将所有业务逻辑保留在业务层中。
最后,我选择了前一个选项并创建了一个轻量级的通用“结果包”类,它封装了对象集合上的操作的成功和失败。成功或失败是对应的对象标识符的关键。
在每个业务逻辑调用中填充一个bundle并返回到视图层。捕获“对象”业务逻辑循环中的“执行操作”中引发的异常,并将相应的失败添加到结果包(键入对象ID)。
视图层有一个简单的帮助器方法,它将结果包中包含的反馈呈现给用户。
这非常有效。
我认为你采取的方法是最适合你的系统的方法。