我見過一個CoR模式的示例實現,使用HashMap作爲向下傳遞的對象,可能是由處理程序添加了新內容;下面的代碼的輪廓:HashMap是否在責任鏈中濫用了模式?
class HandlerImpl implements Handler {
Handler next;
void handle(HashMap context) {
// do handler logic, perhaps adding new stuff to "context"
if (next != null)
next.handle();
}
}
人們很容易使用,因爲處理程序可以增強context
與可由下列處理程序,而無需重複代碼中使用的新信息。另一方面,處理程序彼此依賴,但它們依然鬆散耦合,但它們的順序變得越來越重要。
這段代碼是否有異味?如果我們發現在沒有用新信息補充上下文對象的情況下我們無法處理CoR模式,那麼在這種情況下使用正確的模式是什麼?