Như các câu trả lời khác đã chỉ ra, đây không phải là một thiết kế nghèo nàn. Nó có thể tạo khớp nối chặt chẽ giữa các lớp lồng nhau và các lớp lồng chúng, nhưng nới lỏng khớp nối có thể không phải là một lựa chọn hợp lệ nếu lồng các tham chiếu cung cấp một giá trị cho thiết kế.
Một giải pháp khả thi là "làm phẳng" các tham chiếu lồng nhau trong lớp trình điều khiển.
Thay vì truyền tham số nhiều lần qua các đối tượng lồng nhau, bạn có thể duy trì trong tham chiếu lớp trình điều khiển đến tất cả các đối tượng lồng nhau.
Làm thế nào chính xác điều này được thực hiện (hoặc nếu nó thậm chí là một giải pháp hợp lệ) phụ thuộc vào thiết kế hiện tại của hệ thống, chẳng hạn như:
- Bạn có thể duy trì một số loại bản đồ của các đối tượng lồng nhau trong bộ điều khiển mà không quá phức tạp không?
- Khi bạn truyền tham số cho đối tượng lồng nhau thích hợp, đối tượng lồng nhau có thể nhận ra tham số ngay lập tức không, hoặc có chức năng bổ sung nào xảy ra trong khi chuyển nó qua các đối tượng lồng nhau không?
- Vân vân.
Đây là một vấn đề mà tôi gặp phải trong mẫu thiết kế MVC cho máy khách GXT. Các thành phần GUI của chúng tôi chứa các thành phần GUI lồng nhau cho một số lớp. Khi dữ liệu mô hình được cập nhật, cuối cùng chúng tôi chuyển qua nhiều lớp cho đến khi đạt được (các) thành phần thích hợp. Nó tạo ra sự ghép nối không mong muốn giữa các thành phần GUI vì nếu chúng ta muốn một lớp thành phần GUI mới chấp nhận dữ liệu mô hình, chúng ta phải tạo các phương thức để cập nhật dữ liệu mô hình trong tất cả các thành phần GUI có chứa lớp mới.
Để khắc phục, chúng tôi đã duy trì trong lớp View một bản đồ tham chiếu đến tất cả các thành phần GUI lồng nhau để bất cứ khi nào dữ liệu mô hình được cập nhật, View có thể gửi trực tiếp dữ liệu mô hình đến các thành phần GUI cần nó, kết thúc câu chuyện . Điều này hoạt động tốt vì chỉ có các phiên bản duy nhất của mỗi thành phần GUI. Tôi có thể thấy nó không hoạt động tốt nếu có nhiều phiên bản của một số thành phần GUI, khiến cho việc xác định bản sao nào cần được cập nhật là khó khăn.