我有一个 RequestHandler 类和一个 RequestListener 类。RequestHandler 创建一个 RequestListener 并将其传递给它自己的引用。RequestListener 依次调用 RequestHandler 上的方法来处理不同类型的请求(例如,handleTypeARequest()、handleTypeBRequest() 等)。不幸的是,RequestHandler 也调用 RequestListener 上的方法(例如 processNextRequest()),所以我有一个循环依赖:
class RequestHandler {
RequestListener requestListener;
...
}
class RequestListener {
RequestHandler requestHandler;
...
}
这意味着两者之间的耦合更紧密,通常被认为是代码异味。
一种解决方案是使用不同的对象来封装每个请求,而不是使用不同的方法。当出现提示时,RequestListener 可以处理请求并为其返回某种类型的 Request 对象。不幸的是,我不太喜欢这种方法,部分原因是更多对象和类增加了复杂性,部分原因是性能问题(这很重要);直接在 RequestHandler 上调用 handleXXXRequest() 方法比创建一堆对象要快得多,并且可能还维护一个堆栈以在需要时缓冲它们。
这个问题还有其他解决方案吗,而且,这真的是一个问题吗?