Sugestão de Pattern

Boa noite,

Estou precisando criar uma estrutura para criação de vários objetos, sendo que a classe destes implementarão uma interface. Pensei em usar o Factory Pattern, mas o problema é que serão muitas classes, e ficaria aquele problema de criar um tripona

“if…
else if…
else if…”

Já viu onde isso vai parar, né?

Alguém ae tem uma sugestão para isso?

Abçs!

E como você vai decidir qual implementação devolver ? Isso será configurado fora da aplicação ? A factory recebe alguma constante de tipo ?

De qualquer maneira, não há problema em você ter uma cadeia longa de if’s, desde que isso fique isolado somente no método de criação dos objetos. Mesmo assim, se você achar código “feio” o que você pode fazer é usar Reflection’s para, a partir do nome da classe concreta, instanciar seus objetos.

[quote=rmendes08]E como você vai decidir qual implementação devolver ? Isso será configurado fora da aplicação ? A factory recebe alguma constante de tipo ?

De qualquer maneira, não há problema em você ter uma cadeia longa de if’s, desde que isso fique isolado somente no método de criação dos objetos. Mesmo assim, se você achar código “feio” o que você pode fazer é usar Reflection’s para, a partir do nome da classe concreta, instanciar seus objetos.[/quote]

Concordo com o colega. É melhor centralizar a criação de todos os objetos em um local (mesmo que tenha vários if’s) do que ter if’s pra todo lado. O padrão factory passa essa idéia. Até +!

Obrigado pelas respostas, pessoal.

Optei pelo factory mesmo. Sem utilizar reflection. Acho que não precisa inventar mais do que isso.

Abçs!

[quote=yastorm]Obrigado pelas respostas, pessoal.

Optei pelo factory mesmo. Sem utilizar reflection. Acho que não precisa inventar mais do que isso.

Abçs![/quote]

Se quiser deixar o código mais elegante, você pode fazer uma Factory que recebe um Enum. Você teria um Map em que a chave seria o Enum e o valor seria o objeto que será retornado.