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 Employee
bir sahip olduğunu Person
bir '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
, Person
ve Address
sı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.street
en 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 Employee
sı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ı.
Employee
Sı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
Employee
yapısına bağlıyım - yapısı ne kadar karmaşık olursa olsun.
En Az Bilgi
Biz gelen myEmployee ayrılmış Person
ve Address
ve ideal biz ekleyerek az bilgiyi uygulayarak devam etmelidir aracılığıyla geçiş özelliklerine öyle ki Employee
sadece konuşur Person
ve Person
sadece konuşurAddress