我有一个代理服务,它公开了几个API-每个API请求一个特定类型的Object并返回一个特定类型的Object。请求到达我的ProxyService,这些请求被映射为基础服务所需的格式:
public class ProxyService {
public ProxyServiceResponse_A performA(ProxyServiceRequest_A request);
public ProxyServiceResponse_B performB(ProxyServiceRequest_B request);
public ProxyServiceResponse_C performC(ProxyServiceRequest_C request);
...
}
public class ProxiedService {
public ProxiedServiceResponse_A performA(ProxiedServiceRequest_A request);
public ProxiedServiceResponse_B performB(ProxiedServiceRequest_B request);
public ProxiedServiceResponse_C performC(ProxiedServiceRequest_C request);
...
}
我想创建用于将传入的ProxyService请求映射到ProxiedService请求的通用映射器:
public class MyRequestMapper {
public ProxiedServiceRequest_A mapRequestA(ProxyServiceRequest_A request);
...
}
我知道推土机和apache-velocity,但是我不想使用它们,而是自己动手做。有没有设计模式或通用方法可以实现这一目标?
答案 0 :(得分:0)
您可以考虑使用通用接口。
interface RequestMapper<T, U> {
U mapRequest(T request);
}
class ARequestMapper implements RequestMapper<ProxyServiceRequest_A, ProxiedServiceRequest_A> {
@Override
public ProxiedServiceRequest_A mapRequest(ProxyServiceRequest_A request) {
//TODO
}
}
class BRequestMapper implements RequestMapper<ProxyServiceRequest_B, ProxiedServiceRequest_B> {
@Override
public ProxiedServiceRequest_B mapRequest(ProxyServiceRequest_B request) {
//TODO
}
}