Acoplamento simplificado
Quando um objeto chama um método, propriedade, etc. de outro objeto, dizemos que os objetos estão acoplados. Chamamos isso de acoplamento porque agora o receptor não pode mudar nada sobre seu próprio método / objeto. sem interromper o chamador .
Assim, quanto mais os métodos de acoplamento, adereços. - mais difícil é alterar o código chamado sem quebrar todo o código que o usa.
contemplando acoplamento
- Referenciando até um único objeto, o método acopla dois objetos.
- Obviamente, o acoplamento é necessário para a criação de software.
- Dada a natureza do acoplamento, nós queremos limitá-lo e isolá-lo. Esse objetivo simplesmente acompanha o desenvolvedor de software geral. princípios.
- Quanto menos objetos tivermos que conversar, menor será o acoplamento.
- Se eu precisar, digamos, 20 chamadas de métodos diferentes, o acoplamento será menor se todas as 20 chamadas forem para uma classe / objeto, vice-versa os mesmos métodos espalhados por várias classes / objetos.
A maioria dos conhecimentos causa acoplamentos malucos
Aqui temos um Employee
que tem um Person
que tem um 'Endereço'
public class Employee {
public Person me = new Person();
}
public class Person {
public Address home = new Address();
}
public class Address {
public string street;
}
Para chegar a rua I devem ligar para: myEmployee.me.home.street
. Isso é 180 graus oposto ao princípio do mínimo conhecimento. Eu tenho que saber sobre os internos, a estrutura composta, do Employee
, Person
e Address
classes.
Esse design de classe defeituoso me obriga a conhecer todas essas classes e, assim, myEmployee.me.home.street
acopla-me (o objeto chamador) a nada menos que 3 classes - para obter apenas uma propriedade!
Menos conhecimento salva o dia
Se eu falo apenas com a Employee
classe, estou aplicando o princípio do menor conhecimento em si e, ao fazê-lo, limitamos automaticamente o acoplamento apenas a essa classe e, ao mesmo tempo, isolamos o acoplamento a essa classe.
Adicionando todas as propriedades necessárias na Employee
classe, corrigimos o acoplamento.
portanto
public class Employee {
public Person me = new Person();
public string street { return me.home.street; }
}
Permite-me ligar para: myEmployee.street
-
- Eu "sei" apenas
Employee
- Estou acoplado a apenas
Employee
- não importa quão complexa seja sua estrutura.
Menos conhecimento até o fim
Nós dissociado myEmployee de Person
e Address
, e, idealmente, deveríamos continuar a aplicar menos conhecimento adicionando passagem propriedades tais que Employee
só fala Person
e Person
só falaAddress