Kopling, disederhanakan
Ketika suatu objek memanggil metode, properti, dll. Dari objek lain kita katakan objek digabungkan. Kami menyebutnya penggandengan karena sekarang callee tidak dapat mengubah apa pun tentang metodenya sendiri. tanpa melanggar pemanggil .
Dengan demikian, semakin banyak metode kopling, alat peraga. - semakin sulit untuk mengubah kode callee tanpa merusak semua kode yang menggunakannya.
merenungkan kopling
- Merujuk bahkan prop tunggal., Metode memasangkan dua objek.
- Jelas kopling diperlukan untuk membuat perangkat lunak.
- Mengingat sifat 'langkah kunci' dari kopling, kami ingin membatasi dan mengisolasinya. Tujuan ini sejalan dengan pengembang perangkat lunak umum. prinsip
- Semakin sedikit objek yang harus kita ajak bicara, semakin rendah koplingnya.
- Jika saya perlu membuat, katakanlah, 20 metode panggilan panggilan yang berbeda lebih rendah jika semua 20 panggilan ke satu kelas / objek, sebaliknya metode yang sama tersebar di beberapa kelas / objek.
Sebagian besar Pengetahuan menyebabkan kopling gila
Di sini kita memiliki Employee
yang memiliki Person
yang memiliki 'Alamat'
public class Employee {
public Person me = new Person();
}
public class Person {
public Address home = new Address();
}
public class Address {
public string street;
}
Untuk mendapatkan jalan Saya harus menelepon: myEmployee.me.home.street
. Ini adalah 180 derajat kebalikan dari prinsip pengetahuan paling sedikit. Aku harus tahu tentang internal, struktur komposit dari Employee
, Person
, dan Address
kelas.
Desain kelas yang cacat ini memaksa saya untuk mengetahui semua kelas tersebut dan dengan demikian myEmployee.me.home.street
memasangkan saya (objek penelepon) ke tidak kurang dari 3 kelas - untuk mendapatkan hanya satu properti!
Pengetahuan Paling Tidak Menyelamatkan Hari
Jika saya hanya berbicara dengan Employee
kelas saya menerapkan prinsip pengetahuan paling sedikit per se, dan dengan demikian kita secara otomatis membatasi kopling hanya untuk kelas itu, dan pada saat yang sama mengisolasi kopling untuk satu kelas itu.
Dengan menambahkan semua properti yang diperlukan di Employee
kelas kami memperbaiki kopling.
jadi
public class Employee {
public Person me = new Person();
public string street { return me.home.street; }
}
Mengizinkan saya menelepon: myEmployee.street
-
- Saya "tahu" saja
Employee
- Saya hanya berpasangan
Employee
- tidak peduli seberapa kompleks strukturnya.
Pengetahuan Paling Rendah semua jalan ke bawah
Kami memisahkan myEmployee dari Person
dan Address
, dan idealnya kita harus terus menerapkan pengetahuan paling sedikit dengan menambahkan properti pass through sehingga Employee
hanya berbicara Person
dan Person
hanya berbicara denganAddress