| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2007 09:44:44
|
mcbarsotti
JavaEvangelist
![[Avatar]](/images/avatar/41d80bfc327ef980528426fc810a6d7a.jpg)
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 |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2007 09:46:14
|
mcbarsotti
JavaEvangelist
![[Avatar]](/images/avatar/41d80bfc327ef980528426fc810a6d7a.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2007 10:42:45
|
Aldrin Leal
JavaEvangelist
![[Avatar]](/images/avatar/ea8cd589f6cde4edf01ef2ad6b2d67d9.png)
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/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2007 11:34:46
|
mcbarsotti
JavaEvangelist
![[Avatar]](/images/avatar/41d80bfc327ef980528426fc810a6d7a.jpg)
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 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 13/07/2007 12:32:39
|
sergiotaborda
GUJ Expert
![[Avatar]](/images/avatar/b4a0e0fbaa9f16d8947c49f4e610b549.png)
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 |
|
|
 |
|
|