Definisi: Satu objek harus menjaga pemahaman paling sedikit tentang objek lain.
Asal usul masalah: semakin dekat hubungan antar kelas, semakin besar derajat kopling, dan ketika satu kelas berubah, semakin besar dampak pada kelas lain.
Solusi: Minimalkan kopling antar kelas.
Sejak kami mulai belajar pemrograman, kami telah mengetahui prinsip -prinsip umum pemrograman perangkat lunak: kopling rendah, kohesi tinggi. Apakah itu adalah pemrograman yang berorientasi pada proses atau berorientasi objek, laju penggunaan kembali kode hanya dapat ditingkatkan dengan menjaga kopling antara setiap modul serendah mungkin. Keuntungan dari kopling rendah terbukti dengan sendirinya, tetapi bagaimana Anda bisa memprogram untuk mencapai kopling rendah? Itulah yang akan dicapai oleh aturan Dimit.
Hukum Dimitter, juga dikenal sebagai prinsip pengetahuan terkecil, pertama kali diusulkan pada tahun 1987 oleh Ian Holland dari Northeastern University di Amerika Serikat. Dalam istilah awam, semakin sedikit Anda tahu tentang kelas yang tergantung pada, semakin baik. Dengan kata lain, untuk kelas dependen, tidak peduli seberapa rumit logikanya, cobalah untuk merangkum logika di dalam kelas, dan jangan membocorkan informasi apa pun ke luar kecuali metode publik yang disediakan. Aturan Dimit juga memiliki definisi yang lebih sederhana: hanya berkomunikasi dengan teman -teman langsung. Pertama, mari kita jelaskan apa itu teman langsung: setiap objek akan memiliki hubungan digabungkan dengan objek lain. Selama ada hubungan kopling antara kedua objek, kita akan mengatakan bahwa kedua objek ini adalah hubungan teman. Ada banyak cara untuk berpasangan, seperti ketergantungan, asosiasi, kombinasi, agregasi, dll. Di antaranya, kami memanggil kelas dalam variabel anggota, parameter metode, dan nilai pengembalian metode yang muncul sebagai teman langsung, sedangkan kelas dalam variabel lokal bukan teman langsung. Dengan kata lain, yang terbaik adalah tidak muncul di dalam kelas sebagai variabel lokal.
Berikut adalah contoh pelanggaran prinsip Dimit:
guru kelas publik {public void Teacher (kelas kelas) {class.getstudents.getscore.show (); }}
Apa masalahnya? Kopling terlalu tinggi.
1. Kelas skor dapat dibatalkan di kelas siswa.
2. Metode acara kelas skor juga dapat dihapus.
Kelas siswa dan kelas skor semuanya tidak terbiasa dengan Anda, dan Anda mungkin tidak tahu kapan mereka berubah.
Kami dapat memodifikasinya menjadi:
guru kelas publik {public void Teacher (kelas kelas) {class.showscore (); }} kelas kelas publik {public void showCore (siswa siswa) {student.showscore (); }} siswa kelas publik {skor skor; public void showCore () {skor = skor baru (80); skor.show (); }}
Meringkaskan:
1. Keuntungan dari hukum Dimit adalah mengurangi kopling antar kelas.
2. Kerugiannya adalah bahwa ia akan menghasilkan lebih banyak metode kecil, membuat sistem lebih berantakan dan efisiensi komunikasi akan berkurang.
3. Aplikasi dalam Mode Desain: Mode Fasad (Mode Fasad) dan Mode Mediator (Mode Mediator).