【问题标题】:Use Generics/Patterns in Java for object mapping在 Java 中使用泛型/模式进行对象映射
【发布时间】:2018-10-12 14:10:57
【问题描述】:

我有一个代理服务,它公开了几个 API——每个 API 请求一个特定类型的对象并返回一个特定类型的对象。请求到达我的 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);
    ...
}

我知道 dozer 和 apache-velocity,但我不想使用它们,而是自己做。是否有设计模式或通用方法来实现这一点?

【问题讨论】:

    标签: java generics design-patterns proxy


    【解决方案1】:

    您可以考虑使用通用接口。

    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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2017-10-19
      • 2013-02-01
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 2019-07-09
      • 1970-01-01
      • 2015-06-19
      • 1970-01-01
      相关资源
      最近更新 更多