Eu diria que o ideal é teres um BusinessObject com toda a informação que poderá ser necessário e depois cabe a cada implementação da interface utilizar toda ou apenas parte da informação.
Olá, obrigado pela resposta… Mas acho que com o passar do tempo, esses parametros aumentariam e causariam um pouco de confusão para quem fosse usar a classe, pois não ficaria claro oque deveria ser preenchido.
Será que realmente não tenho muita opção, perante isso??
obrigado !
R
ralphsilver
phlopes:
Pessoal, estou reescrevendo algumas classes para usarem o padrão strategy…
Por ex: Tenho uma classe Plataforma, que irá implementar uma interface registrarOcorrencia()
Porém, esse metódo registrar ocorrência, para cada plataforma, eu posso ter parametros diferentes…
No caso, eu teria que ter 3 métodos diferentes na interface, pois cada um recebe parâmetros distintos…
Existe alguma forma de evitar essa repetição?? (Creio que não…) Existe alguma abordagem elegante para tratar esse comportamento??
Obrigado !!
Minha dica caso você queira parametros indeterminados:
voidregistraOcorrencia(Object...doc)
neste caso, vc faria um foreach nos objetos de entrada e trataria com instanceof
quando vc invokar esse método, vc consegue mandar quantidade indeterminada de parametros:
ocorrencia.registraOcorrencia(obj1,obj2,obj3...)
P
pmlm
Nesse caso, algo está mal nesse modelo de negócio e essa interface não tem razão para existir.
Na prática seria como a minha solução mas muito mais confusa…
A
AbelBueno
Acredito que esteja usando interfaces de maneira incorreta.
Na interface você chamaria o método da mesma forma, sem se preocupar com a implementação.
Se cada classe que chamar o método precisa saber da implementação (para saber o que ele recebe), não faz sentido ter interface.
Uma sugestão no seu caso seria deixar o método registraOcorrencia sem parametros e transformar os argumentos em atributos da classe.
publicstaticvoidmain(String[]args){//na hora de criar os objetos, passo os valores específicosRegistradorOcorrencia[]registradores={newPlataforma1(documento),newPlataforma2(documento,path),newPlataforma3(documento,path,arquivo)};//na hora de chamar não importa a implementaçãofor(RegistradorOcorrenciaregistrador:registradores){registrador.registraDocumento();}}
P
phlopes
Obrigado à todos… Realmente , concordo com você Abel, no caso terei que usar o construtor para trabalhar com os parâmetros !!