Bağlantı, basitleştirilmiş
Bir nesne başka bir nesnenin yöntemini, özelliğini vb. Çağırdığında, nesnelerin birbirine bağlı olduğunu söyleriz. Buna kaplin diyoruz çünkü artık callee kendi yöntemi / pervane hakkında hiçbir şeyi değiştiremiyor . w.out arayanın kırılması .
Böylece, daha fazla bağlantı - yöntemleri, sahne. - callee kodunu kullanan tüm kodu bozmadan değiştirmek daha zordur .
bağlantıyı düşünmek
- Tek bir pervane bile referansla, yöntem iki nesneyi birleştirir.
- Yazılım oluşturmak için eşleştirme gereklidir.
- Kuplajın 'kilit adımı' doğası göz önüne alındığında, onu hem sınırlamak hem de izole etmek istiyoruz. Bu amaç sadece genel yazılım geliştirici ile birlikte gider. prensipler.
- Ne kadar az konuşmamız gerekiyorsa, bağlantı o kadar düşük olur.
- 20 farklı yöntem çağrısı yapmam gerekiyorsa, 20 çağrının tümü bir sınıfa / nesneye aitse kaplin daha düşüktür, aynı yöntemleri birkaç sınıf / nesneye yayar.
Çoğu Bilgi çılgın eşleşmeye neden olur
Burada bir var Employeebir sahip olduğunu Personbir 'Adres' sahip olduğunu
public class Employee {
public Person me = new Person();
}
public class Person {
public Address home = new Address();
}
public class Address {
public string street;
}
Sokak almak için ben aramalıdır: myEmployee.me.home.street. Bu, en az bilgi ilkesinin 180 derece tersidir. Eğer mecbur biliyorum iç işleyişi, kompozit yapının, yaklaşık Employee, Personve Addresssınıflar.
Bu arızalı sınıf tasarım yapmamı güçleri biliyorum bütün bu sınıfları hakkında ve böylece myEmployee.me.home.streeten az 3 sınıflara çiftler beni (arayan nesne) - yalnızca tek özelliği alma!
En Az Bilgi Günü Kurtarır
Ben sadece konuşursanız Employeesınıf I başına en az bilgi prensibini uygulayarak ediyorum ve yaparak otomatik böylece sınırlamak sadece bu sınıfın bir şekilde birleşerek, ve aynı zamanda en izolatı olduğu bir sınıfa bağlanması.
EmployeeSınıfta gerekli tüm özellikleri ekleyerek kuplajı düzeltiriz.
Böylece
public class Employee {
public Person me = new Person();
public string street { return me.home.street; }
}
Aramamı sağlar: myEmployee.street-
- Sadece "biliyorum"
Employee
- Ben sadece
Employeeyapısına bağlıyım - yapısı ne kadar karmaşık olursa olsun.
En Az Bilgi
Biz gelen myEmployee ayrılmış Personve Addressve ideal biz ekleyerek az bilgiyi uygulayarak devam etmelidir aracılığıyla geçiş özelliklerine öyle ki Employeesadece konuşur Personve Personsadece konuşurAddress