Design para criação de objetos

Bom dia,

Eu fiz um método no meu business delegate genérico do tipo ‘save’ passando tb um objeto DTO. Agora queria a partir desse DTO (que pode ser um ClienteDTO, FornecedroDTO, etc etc etc), achar a classe de negocio correspondente aquele DTO. Tipo se passo ClienteDTO, atraves de um metodo por exemplo createBusinessObject(dto) eu obtenho uma instancia para a classe de negocio do cliente. Porém, não queria usar um factory que ficasse naquela:
if(param instanceOf ClienteDTO) return new ClienteBusiness();
if(param instanceOf FornecedorDTO) return new FornecedorBusiness();
etc

porque no futuro quando adicionar novos DTO’s, não queria ter que mexer nesses factory’s etc. Alguem sabe se tem um design pattern para isso? eu acho que fazer isso é querer milagre (a partir de uma classe, instanciar outro, sem que elas tenham uma relacao direta, nem ficar no if isso faz isso), mas não custa procurar heheh

obrigado.

Já que a única relação é que o nome do DTO tem um prefixo igual ao do Bussiness utilize esse prefixo para criação dos objetos… Por exemplo:

String pacoteBussines = "org.xyz.meupacote.";

public Bussiness createBussinesObject(Dto dto) throws Exception{
    String dtoClassName = dto.getClass().getSimpleName(); //pega o nome da classe
    String prefixo = dtoClassName.substring(0, dtoClassName.length() - "DTO".length()); //pega o prefixo
    String classeBussiness = pacoteBussiness+prefixo +"Bussines";
    Class clazzBussiness = Class.forName(classeBussiness);
    return (Bussiness) clazzBussiness.newInstance();
}

Seria mais ou menos isso… [Nao sei nem se isso vai compilar]

Teria como também criar um registro com todos os seus Bussines… e cada bussines fala de alguma forma por qual DTO ele é responsável (através de Generics ou Annotations… ou algum método que vc coloque na interface Bussiness)

Se ficou complicado de entender … pergunta o que nao entendeu que eu explico denovo :grin: