Princípios de Programação Java: Lei de Deméter
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 --





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)