Princípios de Programação Java: Lei de Deméter

Dec 23 2022
Olá a todos, Hoje, veremos uma vez os famosos Princípios de programação Java. O que é a Lei de Demeter (LoD): LOD é um princípio de design de software que foi descrito pela primeira vez por Ian Holland na Northeastern University em 1987.

Olá a todos,

Hoje, veremos os famosos Princípios de programação Java.

O que é a Lei de Demeter (LoD): LOD é um princípio de design de software que foi descrito pela primeira vez por Ian Holland na Northeastern University em 1987. O princípio recebeu o nome da deusa grega da colheita, Demeter, e também é conhecido como “ princípio do menor conhecimento” ou o “princípio do menor acoplamento”.

A Lei de Deméter afirma que um objeto só deve se comunicar com seus vizinhos imediatos e deve ter apenas um conhecimento limitado do funcionamento interno de outros objetos. Isso ajuda a reduzir a complexidade e as dependências de um sistema e facilita sua manutenção e modificação. O princípio é frequentemente aplicado em linguagens de programação orientadas a objetos, como Java, para ajudar a criar um código mais modular e sustentável.

Em Java, a Lei de Deméter pode ser aplicada limitando o número de chamadas de método que um objeto faz a outros objetos e minimizando o número de classes das quais um objeto tem conhecimento direto. Isso pode ser alcançado por meio de técnicas como encapsulamento, injeção de dependência e uso de interfaces.

Por exemplo, considere o seguinte código que viola a Lei de Deméter:

class Customer {
  private BankAccount bankAccount;
  private Address address;

  public double getBalance() {
    return bankAccount.getBalance();
  }

  public String getAddress() {
    return address.getAddress();
  }
}

Para seguir a Lei de Demeter, a classe Cliente pode ser refatorada para usar encapsulamento e expor apenas as informações necessárias para seus clientes:

class Customer {
  private BankAccount bankAccount;
  private Address address;

  public double getBalance() {
    return bankAccount.getBalance();
  }

  public String getAddress() {
    return address.getFormattedAddress();
  }
}

class Address {
  private String street;
  private String city;
  private String state;
  private String zip;

  public String getFormattedAddress() {
    return street + ", " + city + ", " + state + " " + zip;
  }
}

Aqui estão algumas considerações adicionais para aplicar a Lei de Deméter em Java:

  • Minimize o número de métodos que um objeto chama em outros objetos: Cada chamada de método representa uma dependência entre os dois objetos, portanto, minimizar o número de chamadas pode ajudar a reduzir a complexidade do sistema.
  • Use interfaces para desacoplar objetos: As interfaces permitem que os objetos se comuniquem entre si sem ter conhecimento direto do funcionamento interno uns dos outros. Isso pode ajudar a reduzir as dependências entre os objetos e tornar o sistema mais flexível.
  • Use a injeção de dependência para gerenciar relacionamentos de objeto: A injeção de dependência é uma técnica que permite que os objetos recebam suas dependências de fora, em vez de criá-las internamente. Isso pode ajudar a desacoplar objetos e tornar o sistema mais modular e testável.
  • Evite expor detalhes de implementação: Expor detalhes de implementação pode acoplar fortemente objetos e dificultar a alteração do sistema sem afetar outras partes do código. Em vez disso, considere expor apenas as informações necessárias para o uso de outros objetos.
  • Use padrões de design para gerenciar dependências: Padrões de design como o padrão decorador e o padrão adaptador podem ajudar a desacoplar objetos e reduzir o número de dependências entre eles.
  • Evite criar relacionamentos desnecessários entre objetos: considere se um relacionamento entre dois objetos é realmente necessário e evite criar relacionamentos desnecessários.
  • Use delegação em vez de herança: a herança cria um forte relacionamento entre duas classes, o que pode dificultar a alteração de uma classe sem afetar a outra. A delegação, por outro lado, permite que um objeto delegue tarefas a outro objeto, o que pode ajudar a desacoplar os dois objetos e reduzir as dependências.
  • Siga o princípio da responsabilidade única: O princípio da responsabilidade única afirma que uma classe deve ter apenas um motivo para mudar. Seguindo este princípio, você pode ajudar a reduzir o número de dependências entre os objetos e tornar o sistema mais modular e fácil de modificar.

Aqui estão alguns prós e contras da aplicação da Lei de Deméter no design de software:

Prós:

  • Reduz a complexidade: Ao limitar o número de chamadas de método e relacionamentos entre objetos, a Lei de Deméter pode ajudar a reduzir a complexidade de um sistema. Isso pode tornar o sistema mais fácil de entender e manter.
  • Aumenta a modularidade: Seguindo a Lei de Deméter, você pode criar um código mais modular que é mais fácil de modificar e reutilizar. Isso pode melhorar a flexibilidade e a extensibilidade do sistema.
  • Melhora a capacidade de teste: ao desacoplar objetos e reduzir as dependências entre eles, você pode tornar o sistema mais testável e mais fácil de isolar componentes individuais para teste.
  • Maior tempo de desenvolvimento: Seguir a Lei de Deméter pode exigir mais design e planejamento antecipados, o que pode aumentar o tempo de desenvolvimento de um projeto.
  • Reutilização reduzida: Ao limitar as relações entre os objetos, você também pode limitar a reutilização de determinados componentes, o que pode dificultar a reutilização de código em outras partes do sistema.

No geral, a chave para seguir a Lei de Deméter é minimizar o número de dependências entre os objetos e se comunicar apenas com vizinhos imediatos. Isso pode ajudar a reduzir a complexidade do sistema e torná-lo mais fácil de manter e modificar.

Aprendizagem feliz … Codificação feliz …..

Outros artigos interessantes:

AWS Learning: jornada rumo a oportunidades ilimitadas na nuvem.

Maneiras gratuitas de aprender a Nuvem AWS durante as férias

Entendendo --

Comandos Linux para Cloud Learning