我有很多不同的处理器,每个处理器都有自己的
ProcessorRequest
和
ProcessorResponse
上课。
public class Processor1 {
ProcessorResponse1 process(ProcessorRequest1 request) {
// do something
}
}
public class Processor2 {
ProcessorResponse2 process(ProcessorRequest2 request) {
// do something
}
}
public class Processor3 {
ProcessorResponse3 process(ProcessorRequest3 request) {
// do something
}
}
全部
处理请求
类扩展
BaseRequest
全班同学
处理者响应
类扩展
BaseResponse
上课。
现在,我要做的是
Processor
类实现公共接口
BaseProcessor
因此,如果可能的话,不要触摸现有的代码:
public interface BaseProcessor {
public RRR process(TTT request) throws Exception;
}
在哪里?
RRR
和
TTT
是相应的
处理者响应
和
处理请求
.
我试着用泛型。
public interface Baserocessor<T extends BaseRequest, R extends BaseResponse> {
public R process(T request) throws Exception;
}
但在这种情况下,我需要更改每个进程方法的签名并强制转换
基本请求
给一个
处理请求
:
public class Processor1 {
BaseResponse process(BaserRequest baseRequest) {
ProcessorRequest1 request = (ProcessorRequest1) baseRequest;
// do something
}
}
有没有其他方法可以在不改变每一个处理器的情况下做到这一点?