Eh cara eu expliquei mal mesmo!
Seguinte:
1º - Eu queria evitar o produto cartesiano toda vez que uma nova condição fosse adicionada.
Caso eu utilize o que você sugeriu dentro desse método eu teria que verificar na mão a combinação de parâmetros, já que o processamento deve ser alterado de acordo com os parâmetros…
2º - Como optei por ter vários métodos um outro trabalho era verificar qual o método deveria ser chamado.
Foi pra isso que eu usei reflexão:
find(BigDecimal);
find(String);
find(Date);
find(BigDecimal,String);
find(BigDecimal,Date);
find(String,Date);
find(BigDecimal,String,Date);
eu teria que fazer isso:
if(BigDecimal != null && String == null && Date == null)
find(BigDecimal);
if(BigDecimal != null && String != null && Date == null)
find(BigDecimal,String);
if(BigDecimal != null && String != null && Date != null)
find(BigDecimal,String,Date);
.
.
.
Aquele código que postei diz respeito a essa segunda situação…
Voltando ao assunto…
O pouco que eu li sobre o brigde me diz que a utilidade dele era pra coisas como no exemplo seguinte:
Supondo que você tenho que escrever classes que desenhem formas geométricas na tela:
Ponto;
Circulo;
Retangulo;
Só que pra cada Sistema Operacional o desenho é feito de uma maneira diferente:
Windows;
Linux;
Mac;
Então temos:
PontoWindows
PontoLinux
PontoMac
RetanguloWindows
RetanguloLinux
RetanguloMac
CirculoWindows
CirculoLinux
CirculoMac
Se depois eu tivesse que adicionar um novo sistema operacional eu teria que criar classes Ponto,Circulo,Retangulo…
Pelo que o vi e o próprio nome diz ele faria uma ponte entre estes dois universos…
Então pensei se seria possível utilizar essa mesma lógica para os métodos. Vejam a semelhança:
find(X)
find(Y)
find(Z)
find(X,Y)
find(X,Z)
find(Y,Z)
find(X,Y,Z)
O usuário sonha que quer incluir o K na jogada…
find(X)
find(Y)
find(Z)
find(K)
find(X,Y)
find(X,Z)
find(X,K)
find(Y,Z)
find(Y,K)
find(Z,K)
find(X,Y,Z)
find(X,Y,K)
find(Y,Z,K)
find(X,Y,Z,K)
Entenderam o que eu to querendo evitar.
Desculpa aí se eu to complicando as coisas, mas eu postei isso aqui justamente por que eu sabia que alguém tem uma idéia muito mais simples e eficiente :lol: