Используйте Generics / Patterns в Java для отображения объектов - PullRequest
0 голосов
/ 12 октября 2018

У меня есть прокси-служба, которая предоставляет несколько 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);
    ...
}

Я знаю о бульдозерах и apache-скоростях, но я не хочу использовать их, вместо этого делаю это самостоятельно.Есть ли шаблон дизайна или общий способ достижения этого?

1 Ответ

0 голосов
/ 15 октября 2018

Вы можете рассмотреть универсальный интерфейс.

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
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...