关于 Chain of Responsibility

我觉得 banq 关于 CoR 的讨论不能表达 CoR 的本意。

CoR 典型的应用就是事件冒泡。当一个对象不能处理发生在它本身的事件时,它把事件传递给它的主人(Owner)或容器(Container),依次累推。

开发过 Windows 应用的人都应该知道消息循环/消息派遣。对于一个简单应用,你不需要花费很大精力对所有 Windows 消息进行处理,你没有处理的事件都会通过事件冒泡技术传递给系统的缺省处理函数,从而减轻了大量的编码。

类似的还有结构化异常的处理。当应用程序发生异常时,如果发生异常的地方没有 try-cathc block,则异常会被传递到外层调用者,如果外层调用者也没有 try-catch,则又被传递到更外层,直到最后被 OS 截获而统一处理。

我很赞同,事件冒泡法是不是效率低了点,可能处理异步消息还可以。