ConstructiCat Logo
CodeBust.
Browse section ▾

Subir Campo.

Problem

Duas classes têm o mesmo campo.

Solution

Remova o campo das subclasses e mova-o para a superclasse.

##Example

Antes
Unit Soldier health Tank health
Depois
Unit health Soldier Tank

##Why Refactor

As subclasses cresceram e evoluíram separadamente, fazendo surgir campos e métodos idênticos (ou quase idênticos).

##Benefits

  • Elimina a duplicação de campos nas subclasses.

  • Facilita a posterior realocação de métodos duplicados, se existirem, das subclasses para uma superclasse.

##How to Refactor

  1. Certifique-se de que os campos são usados para as mesmas necessidades nas subclasses.

  2. Se os campos tiverem nomes diferentes, dê a eles o mesmo nome e substitua todas as referências aos campos no código existente.

  3. Crie um campo com o mesmo nome na superclasse. Observe que, se os campos eram private, o campo da superclasse deve ser protected.

  4. Remova os campos das subclasses.

  5. Você pode considerar usar Autoencapsular Campo para o novo campo, a fim de ocultá-lo por trás de métodos de acesso.