ConstructiCat Logo
CodeBust.
Browse section ▾

Bajar método.

Problem

¿El comportamiento implementado en una superclase es utilizado por una sola subclase (o por unas pocas)?

Solution

Mueve este comportamiento a las subclases.

##Example

Antes
Unit +getFuel() Soldier Tank
Después
Unit Soldier Tank getFuel()

##Why Refactor

Al principio, cierto método estaba pensado para ser universal para todas las clases, pero en realidad se usa en una sola subclase. Esta situación puede producirse cuando las funcionalidades planificadas no llegan a materializarse.

Tales situaciones también pueden producirse tras la extracción (o eliminación) parcial de funcionalidad de una jerarquía de clases, dejando un método que se usa en una sola subclase.

Si ves que un método lo necesitan varias subclases, pero no todas, puede ser útil crear una subclase intermedia y mover el método a ella. Esto permite evitar la duplicación de código que resultaría de bajar un método a todas las subclases.

##Benefits

  • Mejora la cohesión de las clases. Un método se ubica donde esperas verlo.

##How to Refactor

  1. Declara el método en una subclase y copia su código desde la superclase.

  2. Elimina el método de la superclase.

  3. Busca todos los lugares donde se usa el método y verifica que se le llame desde la subclase necesaria.