Łączenie, uproszczone
Kiedy obiekt wywołuje metodę, właściwość itp. Innego obiektu, mówimy, że obiekty są sprzężone. Nazywamy to sprzężenie bo teraz wywoływany nie może zmienić nic o swoją własną metodę / propan. w. przerwanie dzwoniącego .
Zatem im bardziej metody sprzęgania, rekwizyty. - tym trudniej jest zmienić kod odbiorcy bez zerwania całego kodu, który go używa.
rozważanie sprzężenia
- Odwołując się nawet do jednego rekwizytu, metoda łączy dwa obiekty.
- Oczywiście sprzężenie jest konieczne do tworzenia oprogramowania.
- Biorąc pod uwagę charakter sprzężenia „krok blokady”, chcemy go zarówno ograniczyć, jak i odizolować. Ten cel jest po prostu zgodny z ogólnym oprogramowaniem. zasady
- Im mniej obiektów musimy rozmawiać, tym niższe jest sprzężenie.
- Jeśli muszę, powiedzmy, 20 różnych wywołań metod, sprzężenie jest niższe, jeśli wszystkie 20 wywołań dotyczy jednej klasy / obiektu, odwrotnie te same metody rozłożone na kilka klas / obiektów.
Większość Wiedzy powoduje szalone połączenie
Tutaj mamy coś Employee, co Personma „adres”
public class Employee {
public Person me = new Person();
}
public class Person {
public Address home = new Address();
}
public class Address {
public string street;
}
Aby dostać się na ulicę Muszę zadzwonić: myEmployee.me.home.street. Jest to 180 stopni sprzeczne z zasadą najmniejszej wiedzy. Muszę wiedzieć o wewnętrznych, struktury kompozytu, z Employee, Personi Addressklas.
Ten wadliwy projekt klasy zmusza mnie do znajomości wszystkich tych klas, a zatem myEmployee.me.home.streetłączy mnie (obiekt wywołujący) z co najmniej 3 klasami - aby uzyskać tylko jedną właściwość!
Najmniejsza wiedza ratuje dzień
Jeśli mówię tylko do Employeeklasy, stosuję zasadę najmniejszej wiedzy per se, robiąc to, automatycznie ograniczamy sprzężenie tylko do tej klasy, a jednocześnie izolujemy sprzężenie do tej jednej klasy.
Dodając wszystkie potrzebne właściwości w Employeeklasie, naprawiamy sprzęgło.
a zatem
public class Employee {
public Person me = new Person();
public string street { return me.home.street; }
}
Pozwala mi dzwonić: myEmployee.street-
- Ja tylko „wiem”
Employee
- Jestem sprzężony tylko z
Employee- bez względu na to, jak złożona jest jego struktura.
Najmniej wiedzy aż do samego końca
Oddzieliliśmy myEmployee od Personi Address, i najlepiej powinniśmy nadal stosować najmniejszą wiedzę, dodając właściwości przejścia przez takie, że Employeetylko mówi się Personi Persontylko mówiAddress