Descer Método.
Um comportamento implementado em uma superclasse é usado por apenas uma (ou algumas) subclasses?
Mova esse comportamento para as subclasses.
##Example
##Why Refactor
No início, um determinado método deveria ser universal para todas as classes, mas, na realidade, é usado em apenas uma subclasse. Essa situação pode ocorrer quando funcionalidades planejadas não se concretizam.
Tais situações também podem ocorrer após a extração (ou remoção) parcial de funcionalidades de uma hierarquia de classes, deixando um método que é usado em apenas uma subclasse.
Se você perceber que um método é necessário em mais de uma subclasse, mas não em todas, pode ser útil criar uma subclasse intermediária e mover o método para ela. Isso permite evitar a duplicação de código que resultaria de descer um método para todas as subclasses.
##Benefits
- Melhora a coesão da classe. Um método fica localizado onde você espera vê-lo.
##How to Refactor
-
Declare o método em uma subclasse e copie seu código da superclasse.
-
Remova o método da superclasse.
-
Encontre todos os lugares onde o método é usado e verifique se ele é chamado a partir da subclasse necessária.