Setar implementação de uma interface.  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
mcbarsotti
JavaEvangelist
[Avatar]

Membro desde: 11/05/2006 12:10:38
Mensagens: 329
Offline

olá a todos,

tem como fazer uma implementação de uma interface de acordo com a classe concreta passada???

tipo assim:



A RelatorioFactory é uma classe abstrata e tem métodos que retornam classes concretas que implementam a interface Relatorio.

tem como fazer isso??

Vou colar o código aqui:







e a chamada ficaria assim:



Obrigado!

Obs.: O texto acima não é uma verdade soberana, não precisa cortar os pulsos caso não concorde.

[]'s
[MSN]
mcbarsotti
JavaEvangelist
[Avatar]

Membro desde: 11/05/2006 12:10:38
Mensagens: 329
Offline

o problema está na chamada, já que eu preciso passar uma classe concreta que implementa a interface, como eu consigo fazer isso???

Obrigado.

Obs.: O texto acima não é uma verdade soberana, não precisa cortar os pulsos caso não concorde.

[]'s
[MSN]
Aldrin Leal
JavaEvangelist
[Avatar]

Membro desde: 10/07/2007 17:04:34
Mensagens: 330
Localização: Belem / PA / Brazil
Offline

Você pode imaginar criar uma classe abstrata, mas com um método Factory estático. Não é difícil:



Um exemplo prático de utilização deste idioma é o commons-logging. Mas imagino que você está fazendo coisas estáticas, o que deve simplificar bastante o trabalho.

-- Aldrin Leal, http://www.leal.eng.br/mnemetica/
[WWW] [MSN]
mcbarsotti
JavaEvangelist
[Avatar]

Membro desde: 11/05/2006 12:10:38
Mensagens: 329
Offline

a idéia é de ter uma interface geral, e setar a sua implementação na hora da escolha do relatorio...

tipo

Interface inter = factory.getImplementacaoInterface();

como eu conseguiria fazer isso?

obrigado

Obs.: O texto acima não é uma verdade soberana, não precisa cortar os pulsos caso não concorde.

[]'s
[MSN]
sergiotaborda
GUJ Expert
[Avatar]

Membro desde: 22/03/2005 20:57:48
Mensagens: 3433
Offline

mcbarsotti wrote:olá a todos,

tem como fazer uma implementação de uma interface de acordo com a classe concreta passada???

tipo assim:





Não ficou claro para mim se o seu problema é obter uma implementação da classe abstrata RelatorioFactory ou se é obter uma classe que implementa Relatorio.

Para o primeiro caso vc usa um padrão chamado de Abstract Factory
Que é basicamente o que o Aldrin Leal já falou. Um método estático na prorpria class RelatorioFactory de forma que o codigo de chamada ficaria



É aconselhado que .getFactory() não tenha parametros (já isso é violaçao do principio de separação de responsabilidade), mas isso fica a seu critério.

Se o problema é retorna uma classe que implemente Relatorio, vc já a tem. A sua GeraRelatorioDeAtividades (que se deveria chamar RelatorioDeAtividades ) já é a classe que precisa.

O mecanismo que vc está construindo permite que exista a substituição da
classe real que implemente os metodos de RelatorioFactory de forma que exista uma familia de classes que implementem Relatorio.

Ficariam mais ou menos assim


Criando sua própria API de Validação



Blog do MiddleHeaven
[WWW]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team