Definição: Um objeto deve manter o menor entendimento de outros objetos.
A origem do problema: quanto mais próxima a relação entre as classes, maior o grau de acoplamento e quando uma classe muda, maior o impacto em outra classe.
Solução: Minimize o acoplamento entre as classes o máximo possível.
Desde que começamos a aprender a programação, conhecemos os princípios gerais da programação de software: baixo acoplamento, alta coesão. Quer seja orientada a processos ou programação orientada a objetos, a taxa de reutilização de código pode ser melhorada apenas mantendo o acoplamento entre cada módulo o mais baixo possível. As vantagens do baixo acoplamento são evidentes, mas como você pode programar para alcançar o baixo acoplamento? É exatamente isso que a regra de Dimit vai realizar.
A lei de Dimitter, também conhecida como princípio do menor conhecimento, foi proposta pela primeira vez em 1987 pela Ian Holland, da Northeastern University, nos Estados Unidos. Nos termos do leigo, quanto menos você conhece uma aula que depende, melhor. Em outras palavras, para a classe dependente, por mais complexa que seja a lógica, tente encapsular a lógica dentro da classe e não vaze nenhuma informação para o exterior, exceto o método público fornecido. A regra Dimit também tem uma definição mais simples: apenas se comunique com amigos diretos. Primeiro, vamos explicar o que é um amigo direto: cada objeto terá um relacionamento acoplado com outros objetos. Enquanto houver um relacionamento de acoplamento entre os dois objetos, diremos que esses dois objetos são um relacionamento de amigo. Existem muitas maneiras de se unir, como dependência, associação, combinação, agregação, etc. Entre elas, chamamos a classe na variável de membro, parâmetros de método e valor de retorno do método que aparece como amigos diretos, enquanto a classe na variável local não é um amigo direto. Em outras palavras, é melhor não aparecer dentro da classe como uma variável local.
Aqui está um exemplo de violação do princípio Dimit:
public classe professora {public void professor (classes classes) {classes.getStudents.getscore.show (); }}
Quais são os problemas? Acoplamento muito alto.
1. A aula de pontuação pode ser cancelada na aula de estudante.
2. O método de show da classe de pontuação também pode ser excluído.
Aulas e aulas de pontuação não são familiares para você, e você pode não saber quando elas mudam.
Podemos modificá -lo para:
Public classe Professor {public void professor (classes classes) {Class.ShowsCore (); }} classe pública Classes {public void ShowScore (estudante do aluno) {Student.showsCore (); }} classe pública estudante {pontuação; public void ShowScore () {Score = New Score (80); score.show (); }}
Resumir:
1. A vantagem da lei de Dimit é reduzir o acoplamento entre as classes.
2. A desvantagem é que ele produzirá mais pequenos métodos, tornando o sistema mais confuso e a eficiência da comunicação será reduzida.
3. Aplicações no modo de design: modo de fachada (modo de fachada) e modo mediador (modo mediador).