0
respostas

Aplicação do desing pattern strategy

Saudações, tudo certo?

Possuo uma duvida sobre a aplicação do desing pattern strategy, na qual tenho seguinte cenário:

Estou trabalhando em um sistema utilizando a arquitetura de microserviços, no qual um dos projetos possui diversos endpoints que retornam objetos "B", "C" e "D" sendo todos eles filhos da classe "A".

O projeto que efetua a chamada dos serviços cria uma lista de referencias do objeto "A" para guardar o que é retornado dos resquests, tendo a seguinte estrutura:

    private List<TriagemHttp> triagens;

    public TriagemService(List<TriagemHttp> triagens) {
        this.triagens = triagens;
    }

    @SuppressWarnings("unchecked")
    public void iniciarProcesso() {

        List<A> bds = new ArrayList<A>();
        Type listType = new TypeToken<List<A>>() {}.getType();

        triagens.forEach(t -> {
                bds.addAll((ArrayList<A>) JsonUtil.jsonToList(t.sendRequest(), listType));
            });

Até este ponto está tudo funcionando corretamente, porém notem que é retornado uma lista de objetos do tipo "A", que é a classe mãe. Porém preciso efetuar trativas diferentes para cada um dos objetos filhos.

Pensei em aplicar o padrão de projeto strategy, ficando mais ou menos assim:

bds.forEach(b -> {
        realizarTratativa(b , new objetoQueImplementaInterface())
});

Então neste trecho está minha duvida, como eu saberia qual objeto que implementa a interface?

Eu poderia verificar atraves de um "if" algum parametro do objeto para verificar de qual tipo ele é, porém isso iria de encontro com a utilização do desing patter em questão.

Há alguma outra solução para este caso?

Desde já, obrigado!