Fala
Jose ...
Vou
tentar explicar ...
Um
interface serve para vc nao criar dependencia de uma implementacao apenas da
interface ...
O q
isso quer realmente dizer, humm ... por exemplo ...
public
interface CalculaTaxa {
public double calcula(double) ;
}
Vc
criou uma interface, o q vc asegurou para o programa q vai usar ??? Q ele tem um
objeto para trabalhar, q passando um double ele retorna outro, mas nao disse o q
o objeto tera q fazer com esse double ...
Ai vc
cria duas implementacoes ...
public class CalculaTaxaImpl1 implements
CalculaTaxa {
public double calcula(double) {
return double + 1
;
}
}
public class CalculaTaxaImpl2 implements
CalculaTaxa {
public double calcula(double) {
return double + 2
;
}
}
O
programa clint nao sabera qual implementacao ele estara usando, pq ele soh se
preocupa com a interface ...
Entao
para ficar vc vc pode criar um factory ...
public
class CalculaTaxaFactory {
private static CalculaTaxaFactory instance ;
// singleton nao tem necessidade de expor seu construtor ..
private CalculaTaxaFactory() {
}
public static synchronized CalculaTaxaFactory getInstance()
{
if (this.instance == null)
{
instance = new
CalculaTaxaFactory() ;
}
return instance
;
}
public CalculaTaxa createCalculaTaxa() {
try {
return (CalculaTaxa)
Class.forName(System.getProperty("calculaTaxaClass")).newInstance()
;
} catch (Exception e) {
}
}
}
public
class Cliente {
///
public static void main(String[] argvs) {
CalculaTaxa ct =
CalculaTaxaFactory.getInstance().createCalculaTaxa() ;
System.out.println("resultado:"
+ ct.calcula(10.0)) ;
}
}
Eh soh
setar a implementacao no property q atravez de reflexao o factory cria a
instancia da implementacao ... Acho q esse codigo deve funcionar se nao comi
bola na digitacao ...
Agora
classe abstrata eh qdo todas as implementacoes vai precisar de alguns
metodos prontos ... Geralmente utilizadas em frameworks, q a implementacao tem q
ter alguns comportamentos mais especificos ...
...
[]s
|
- [java-list] Interfaces e Abstract Class Jose Carlos