...以及如何最好地处理视图层的成功/失败反馈。
选项包括:
doBusinessLogic(things)
或
for (Thing thing : things) {
doBusinessLogic(thing)
}
假设我们想要一个以一致的方式接收成功/错误反馈的视图层(即对值对象的单个或多个操作),最好的方法是什么?
澄清:
处理从视图层中的业务逻辑调用抛出的多个异常类型代码繁重,并且还会导致维护问题(引入了表示层不知道的新异常)。业务逻辑调用似乎更好地处理多个值对象上的错误,并“封装”它们以便视图以一致的方式处理。
答案 0 :(得分:1)
你的后一个建议的内容如何:
for (businessObject : businessObjects) { businessObject.doBusinessLogic() }
我们的想法是将业务逻辑放在业务对象的方法中。您的视图层可以循环遍历所有业务对象,告诉每个业务对象开展业务。每个业务如何处理业务层中业务对象的逻辑。您可以通过从doBusinessLogic方法返回值或通过抛出令人讨厌的事件的异常来处理错误等。
如果您正在进行跨业务对象逻辑(即,对多个业务对象进行操作的逻辑),也许您可以构建一个businessObjectManager类,该类可以具有接收一个或多个业务对象并在其上运行的方法他们。因此,通过将管理器对象放在业务层中,您仍然可以将所有业务逻辑保留在业务层中。
答案 1 :(得分:0)
最终,我选择了前一个选项并创建了一个轻量级的通用“结果包”类,该类封装了对象集合上的操作的成功和失败。成功或失败的关键是相应的对象标识符。
在每个业务逻辑调用中填充一个bundle并返回到视图层。捕获“对象”业务逻辑循环中的“执行操作”中引发的异常,并将相应的失败添加到结果包(键入对象ID)。
视图层有一个简单的辅助方法,可以将结果包中包含的反馈提供给用户。
这非常有效。
我认为您采用的方法是最适合您系统的方法。