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