ConstructiCat Logo
CodeBust.
Browse section ▾

Encapsular Campo.

Problem

Você tem um campo público.

Solution

Torne o campo privado e crie métodos de acesso para ele.

##Example

Before
class Person {
  public String name;
}
After
class Person {
  private String name;

  public String getName() {
    return name;
  }
  public void setName(String arg) {
    name = arg;
  }
}

##Why Refactor

Um dos pilares da programação orientada a objetos é o Encapsulamento, a capacidade de ocultar os dados de um objeto. Caso contrário, todos os objetos seriam públicos e outros objetos poderiam obter e modificar os dados do seu objeto sem qualquer controle! Os dados ficam separados dos comportamentos associados a eles, a modularidade das seções do programa é comprometida e a manutenção se torna complicada.

##Benefits

  • Se os dados e o comportamento de um componente estão estreitamente inter-relacionados e ficam no mesmo lugar no código, é muito mais fácil manter e desenvolver esse componente.

  • Você também pode realizar operações complexas relacionadas ao acesso aos campos do objeto.

##How to Refactor

  1. Crie um getter e um setter para o campo.

  2. Encontre todas as invocações do campo. Substitua a obtenção do valor do campo pelo getter e substitua a atribuição de novos valores ao campo pelo setter.

  3. Depois que todas as invocações do campo tiverem sido substituídas, torne o campo privado.

Próximos Passos

Encapsular Campo é apenas o primeiro passo para aproximar os dados e os comportamentos que envolvem esses dados. Depois de criar métodos simples para acessar os campos, você deve revisar os lugares onde esses métodos são chamados. É bem possível que o código nessas áreas fique mais apropriado nos métodos de acesso.