多值对象的业务逻辑 - 在哪里放置循环?

时间:2009-08-26 21:07:56

标签: java business-logic bulk-operations

...以及如何最好地处理视图层的成功/失败反馈。

选项包括:

doBusinessLogic(things)

for (Thing thing : things) {
  doBusinessLogic(thing)
}

假设我们想要一个以一致的方式接收成功/错误反馈的视图层(即对值对象的单个或多个操作),最好的方法是什么?

澄清:

处理从视图层中的业务逻辑调用抛出的多个异常类型代码繁重,并且还会导致维护问题(引入了表示层不知道的新异常)。业务逻辑调用似乎更好地处理多个值对象上的错误,并“封装”它们以便视图以一致的方式处理。

2 个答案:

答案 0 :(得分:1)

你的后一个建议的内容如何:

for (businessObject : businessObjects) { businessObject.doBusinessLogic() }

我们的想法是将业务逻辑放在业务对象的方法中。您的视图层可以循环遍历所有业务对象,告诉每个业务对象开展业务。每个业务如何处理业务层中业务对象的逻辑。您可以通过从doBusinessLogic方法返回值或通过抛出令人讨厌的事件的异常来处理错误等。

如果您正在进行跨业务对象逻辑(即,对多个业务对象进行操作的逻辑),也许您可​​以构建一个businessObjectManager类,该类可以具有接收一个或多个业务对象并在其上运行的方法他们。因此,通过将管理器对象放在业务层中,您仍然可以将所有业务逻辑保留在业务层中。

答案 1 :(得分:0)

最终,我选择了前一个选项并创建了一个轻量级的通用“结果包”类,该类封装了对象集合上的操作的成功和失败。成功或失败的关键是相应的对象标识符。

在每个业务逻辑调用中填充一个bundle并返回到视图层。捕获“对象”业务逻辑循环中的“执行操作”中引发的异常,并将相应的失败添加到结果包(键入对象ID)。

视图层有一个简单的辅助方法,可以将结果包中包含的反馈提供给用户。

这非常有效。

我认为您采用的方法是最适合您系统的方法。