Seperti yang ditunjukkan oleh jawaban lain, ini bukan desain yang buruk. Itu dapat membuat kopling ketat antara kelas bersarang dan yang bersarang, tetapi melonggarkan kopling mungkin bukan opsi yang valid jika bersarang referensi memberikan nilai pada desain.
Salah satu solusi yang mungkin adalah "meratakan" referensi bersarang di kelas controller.
Alih-alih melewatkan parameter beberapa kali melalui objek bersarang, Anda bisa mempertahankan referensi kelas pengontrol ke semua objek bersarang.
Bagaimana tepatnya ini diterapkan (atau jika itu bahkan solusi yang valid) tergantung pada desain sistem saat ini, seperti:
- Apakah Anda dapat mempertahankan semacam peta objek bersarang di controller tanpa terlalu rumit?
- Ketika Anda meneruskan parameter ke objek bersarang yang sesuai, dapatkah objek bersarang mengenali parameter dengan segera, atau adakah fungsionalitas tambahan yang terjadi saat meneruskannya melalui objek bersarang?
- dll.
Ini adalah masalah yang saya temui dalam pola desain MVC untuk klien GXT. Komponen GUI kami berisi komponen GUI bersarang untuk beberapa lapisan. Ketika data model diperbarui, kami akhirnya melewati beberapa lapisan sampai mencapai komponen yang sesuai. Itu menciptakan kopling yang tidak diinginkan antara komponen GUI karena jika kami ingin kelas komponen GUI baru untuk menerima data model, kami harus membuat metode untuk memperbarui data model di semua komponen GUI yang berisi kelas baru.
Untuk memperbaikinya, kami memelihara di kelas Lihat peta referensi untuk semua komponen GUI bersarang sehingga setiap kali data model diperbarui, Lihat dapat mengirim data model yang diperbarui langsung ke komponen GUI yang membutuhkannya, akhir cerita . Ini bekerja dengan baik karena hanya ada satu contoh dari setiap komponen GUI. Saya bisa melihatnya tidak berfungsi dengan baik jika ada beberapa contoh beberapa komponen GUI, membuatnya sulit untuk mengidentifikasi salinan mana yang perlu diperbarui.