I have a question about Java. I've been working with Java for less than a year, and I'm starting to have interesting doubts about design patterns:
For example, I want to improve my code with Object-Oriented (OO) principles to make it cleaner, but it raised a question: won't I increase the processing time?
In the code below:
import java.util.ArrayList;
import java.util.List;
public class EscritorioContabilidade {
//metodo para recuperar a informacao salarial utilizando os IF´s da pior maneira....rsrsr
public double getSalarioFuncionario(String tipoFuncionario){
double salario = -1;
if("gerente".equals(tipoFuncionario)){
salario = 1000;
}
else if("balconista".equals(tipoFuncionario)){
salario = 900;
}
else if("faixineiro".equals(tipoFuncionario)){
salario = 550;
}
return salario;
}
//metodo para recuperar a informacao salarial utilizando os IF´s. Nao melhoramos muito
public double getSalarioFuncionario(Object funcionario){
double salario = -1;
if(funcionario instanceof Gerente){
salario = 1000;
}
else if(funcionario instanceof Balconista){
salario = 900;
}
else if(funcionario instanceof Faixineiro){
salario = 550;
}
return salario;
}
//metodo para recuperar a informacao salarial utilizando polimorfismo. Agora sim!
public double getSalarioFuncionario(Funcionario funcionario){
return funcionario.informarSalario();
}
public static void main(String [] asdf){
EscritorioContabilidade escritorioContabilidade = new EscritorioContabilidade();
double folhaPagamento = 0;
List<Funcionario> listaFuncionario = new ArrayList<Funcionario>();
//adicionando os funcionarios
listaFuncionar
io.add(new Gerente());
listaFuncionario.add(new Balconista());
listaFuncionario.add(new Faixineiro());
//usando o polimorfismo para determinar a folha de pagamento
for (Funcionario funcionario : listaFuncionario) {
folhaPagamento += escritorioContabilidade.getSalarioFuncionario(funcionario);
}
System.out.println("folha de pagamento: "+folhaPagamento);
//agora vamos usar um dos metodos que utilizam os IFs e voces podem ver a clareza em ambos os trechos de codigo
folhaPagamento = 0;
folhaPagamento += escritorioContabilidade.getSalarioFuncionario("gerente");
folhaPagamento += escritorioContabilidade.getSalarioFuncionario("balconista");
folhaPagamento += escritorioContabilidade.getSalarioFuncionario("faixineiro");
System.out.println("folha de pagamento: "+folhaPagamento);
}
}
public abstract class Funcionario {
public abstract double informarSalario();
}
public class Gerente extends Funcionario {
@Override
public double informarSalario() {
return 1000;
}
}
class Balconista extends Funcionario{
@Override
public double informarSalario() {
return 900;
}
}
class Faixineiro extends Funcionario{
@Override
public double informarSalario() {
return 550;
}
}
In this code, if I use polymorphism, my code certainly becomes more elegant. However, if I use if statements, wouldn't it have better performance because it doesn't create memory pointers and such?
I hope to clarify a question about Java and design patterns.
Aucun commentaire:
Enregistrer un commentaire