我已经看到了一个 CoR 模式的示例实现,它使用 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 模式,那么在这种情况下使用什么模式才是正确的呢?