Một số phương pháp hay nhất để dàn xếp tương tác giữa các thành phần phức tạp trong Chế độ xem của bạn là gì?Giao tiếp liên kết trong một chế độ xem (MVC)
Tôi không nói về các tiện ích đơn giản như hộp tổ hợp hoặc điều khiển lưới nhưng thành phần được tạo thành từ nhiều tiện ích và có thể xứng đáng là đơn vị được thử nghiệm một mình.
bạn sẽ:
- Xác định giao diện trừu tượng cho mỗi thành phần,
hãy Controllertreo chúng lên qua dependency injection để cho họ trực tiếp nói chuyện với nhau qua các cuộc gọi phương pháp? Các thành phần do đó nhận thức được các giao diện của các thành phần khác. - Xác định các sự kiện mà mỗi thành phần có thể kích hoạt và
cho phép Bộ điều khiểntrực tiếp kết nối chúng thông qua trình xử lý sự kiện với nhau? Các thành phần do đó có bộ xử lý sự kiện gắn liền với bồn rửa sự kiện của các thành phần khác. - Xác định giao diện trừu tượng cho mỗi thành phần, xác định các sự kiện mà chúng có thể kích hoạt và
để cho Trình điều khiểnnghe trên tất cả các sự kiện và thực hiện cuộc gọi phương thức trên giao diện? Các thành phần do đó hoàn toàn bất khả tri đối với các thành phần khác. - Ứng dụng cổ điển của mẫu Observer?
- Còn gì nữa không?
Cập nhật: Tôi đã đột quỵ ra "để cho các bộ điều khiển ..." từ # 1-3 vì nó không nhất thiết phải là điều khiển có làm việc định tuyến/dàn nhạc trong những trường hợp. Nó có thể là chính View.
Tôi đã áp dụng phương pháp # 3 trong một dự án gần đây và tôi hài lòng với việc tách và kiểm tra cá nhân của các thành phần. Tuy nhiên, tôi có cảm giác rằng tôi có thể hợp lý hóa dây dẫn của các thành phần. Trong trường hợp của tôi, đối tượng View chính phải thêm nhiều trình lắng nghe sự kiện vào mỗi thành phần và sau đó gọi các phương thức trên các thành phần thích hợp, sau khi đôi khi thực hiện một số xử lý cục bộ (như nói chuyện với Mô hình). Mã để thêm các trình xử lý sự kiện trông hơi lộn xộn và tôi đặc biệt đang tìm kiếm một cách làm sạch.