Oop 传递代理/策略与返回聚合结果以实现业务逻辑?
有些方法必须处理特殊情况 例如,方法Oop 传递代理/策略与返回聚合结果以实现业务逻辑?,oop,interface,architecture,callback,delegates,Oop,Interface,Architecture,Callback,Delegates,有些方法必须处理特殊情况 例如,方法Print必须处理用户在打印过程中手动取消打印(canceled)或打印机缺纸(OutOfPaper)的情况 这些情况既没有错误也没有异常,因为它们是业务逻辑的一部分 我看到了方法实现的两种变体 备选案文1: public enum PrintResult Ok Canceled OutOfPaper end enum public function Print() as PrintResult end function 方法Pr
Print
必须处理用户在打印过程中手动取消打印(canceled
)或打印机缺纸(OutOfPaper
)的情况
这些情况既没有错误也没有异常,因为它们是业务逻辑的一部分
我看到了方法实现的两种变体
备选案文1:
public enum PrintResult
Ok
Canceled
OutOfPaper
end enum
public function Print() as PrintResult
end function
方法Print
有一个独特的结果类型PrintResult
,其中包含方法执行期间发生的情况的报告
消费者调用方法Print
,获取结果,分析结果并决定下一步做什么
备选案文2:
public Sub Print(CanceledAction as Action, OutOfPaperAction as Action)
end Sub
方法Print
没有明确的结果类型,但在特殊情况下要做的行为通过回调/委托/接口传递给方法
调用方法Print
时,消费者提供了在特殊情况下使用的方法
问题:
我投票赞成返回结果。传递委托意味着该方法知道更多它应该知道的情况 理想情况下,方法不应该知道某些操作甚至是可用的。它只是返回其状态。是否有任何行动可以做出反应?这不是它的业务