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!