interface
interface Imposto {
double calcula(Orcamento orcamento);
}
icms.java
class ICMS implements Imposto {
public double calcula(Orcamento orcamento) {
return orcamento.getValor() * 0.1;
}
}
iss.java
class ISS implements Imposto {
public double calcula(Orcamento orcamento) {
return orcamento.getValor() * 0.06;
}
}
regra de negócios
class CalculadorDeImpostos {
public void realizaCalculo(Orcamento orcamento, Imposto imposto) {
double valor = imposto.calcula(orcamento);
System.out.println(valor);
}
}
testando
public class Principal {
public static void main(String[] args) {
Imposto iss = new ISS();
Imposto icms = new ICMS();
Orcamento orcamento = new Orcamento(500.0);
CalculadorDeImpostos calculador = new CalculadorDeImpostos();
// Calculando o ISS
calculador.realizaCalculo(orcamento, iss);
// Calculando o ICMS
calculador.realizaCalculo(orcamento, icms);
}
}