關於 Chain of Responsibility

manbaum發表於2003-03-25
我覺得 banq 關於 CoR 的討論不能表達 CoR 的本意。

CoR 典型的應用就是事件冒泡。當一個物件不能處理發生在它本身的事件時,它把事件傳遞給它的主人(Owner)或容器(Container),依次累推。

開發過 Windows 應用的人都應該知道訊息迴圈/訊息派遣。對於一個簡單應用,你不需要花費很大精力對所有 Windows 訊息進行處理,你沒有處理的事件都會透過事件冒泡技術傳遞給系統的預設處理函式,從而減輕了大量的編碼。

類似的還有結構化異常的處理。當應用程式發生異常時,如果發生異常的地方沒有 try-cathc block,則異常會被傳遞到外層呼叫者,如果外層呼叫者也沒有 try-catch,則又被傳遞到更外層,直到最後被 OS 截獲而統一處理。

相關文章