Lei de Deméter (LoD)

Definição

A Lei de Deméter (Law of Demeter - LoD) é uma diretriz de design que sugere que um módulo deve conhecer o mínimo possível sobre os outros módulos com os quais interage.

Em termos práticos, uma função ou método deve chamar apenas métodos de:

  • Si mesmo
  • Parâmetros recebidos
  • Objetos que ela cria diretamente
  • Seus atributos diretos

Ou seja, evite acessar objetos “de objetos” (ex: pedido.cliente.endereco.cidade), pois isso cria dependências frágeis e acoplamento excessivo.

Por que é importante

A Lei de Deméter promove encapsulamento e reduz o acoplamento. Quando uma parte do sistema depende da estrutura interna de outra, qualquer mudança na hierarquia de objetos pode quebrar o código.

Respeitar essa lei ajuda a manter os módulos mais autônomos e menos sensíveis a alterações estruturais, facilitando refatorações e evoluções de sistema.

Exemplo prático (Python)

Este exemplo viola a Lei de Deméter ao acessar uma cadeia de objetos internos:

# Violação da LoD
cidade = pedido.cliente.endereco.cidade

Aqui, a função depende da estrutura interna de cliente e endereco, que pode mudar a qualquer momento. Para respeitar a LoD, delegamos essa responsabilidade para a própria classe Pedido:

class Pedido:
    def __init__(self, cliente):
        self.cliente = cliente

    def obter_cidade_do_cliente(self):
        return self.cliente.obter_cidade()

class Cliente:
    def __init__(self, endereco):
        self.endereco = endereco

    def obter_cidade(self):
        return self.endereco.cidade

Agora, quem precisa da cidade chama apenas:

cidade = pedido.obter_cidade_do_cliente()

Dessa forma, a classe que consome o dado não precisa conhecer a estrutura de Cliente nem de Endereco — apenas confia na interface pública de Pedido.

Relacionados

Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com