13 de novembro de 2017


O push down method/field é um método de refatoração utilizado quando a implementação de um método da superclasse não está sendo utilizado por todas as suas subclasses. Nesse caso, é interessante mover o método ou atributo da superclasse para a subclasse que faz o uso do mesmo.

A necessidade de aplicação dessa refatoração pode sugerir que algumas subclasses da hierarquia tenham conhecimento desnecessário de um método específico. Nesse caso, elas estão implementando o método de forma irregular e aumentando a complexidade do código como um todo.
   
Veja no exemplo a seguir uma superclasse Funcionario que é estendida pelas classes Vendedor e Engenheiro. O método calculoVendas para verificar quantidade de vendas é implementado pela superclasse, mas, utilizado somente pela classe Vendedor. Após a refatoração, o método foi movido para a classe Vendedor.

Antes da refatoração:

public class Funcionario {
   
    private String nome;
    private String cpf;
    private String rg;
    private String endereco;
    private String estadoCivil;
    private String numFilhos;
    private String telefoneFixo;
    private String telefoneCelular;
    private double salario;
   
    ...
   
    public double calculoVendas(){       
        ...       
        return vendas;
    }

}

public class Engenheiro extends Funcionario {   
    ...
}

public class Vendedor extends Funcionario {
   
    ...

}

Após a refatoração:

public class Funcionario {
   
    private String nome;
    private String cpf;
    private String rg;
    private String endereco;
    private String estadoCivil;
    private String numFilhos;
    private String telefoneFixo;
    private String telefoneCelular;
    private double salario;   
    ...   
}

public class Engenheiro extends Funcionario {   
    ...
}

public class Vendedor extends Funcionario {   
    ...   
    public double calculoVendas(){           
            ...           
            return vendas;
        }
}

Referência:

FOWLER, M. Refactoring: Improving the Design of Existing Code. 1. ed. Boston: Addison- Wesley Professional, 1999.

0 comentários:

Postar um comentário

Comentários:

Perfil

Formada em Sistemas de Informação e pós-graduada em Engenharia de Software.

Facebook

Views