2008-10-10 33 views
5

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ẽ:

  1. Xác định giao diện trừu tượng cho mỗi thành phần, hãy Controller treo 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.
  2. 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ển trự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.
  3. 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ển nghe 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.
  4. Ứng dụng cổ điển của mẫu Observer?
  5. 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.

Trả lời

4

Tùy chọn # 3 có vẻ giống như mẫu hòa giải và thường là cách tiếp cận tốt nhất khi logic cập nhật và giao tiếp giữa các đối tượng phức tạp. Nó cũng có lợi thế bổ sung là giữ logic điều khiển và khởi tạo tập trung mà có xu hướng làm cho việc truy tìm thông qua và gỡ lỗi các kiểu trường hợp này dễ dàng hơn.

0

Nghe có vẻ như bạn có kiến ​​thức để trả lời câu hỏi của riêng bạn về câu hỏi này nhưng có lẽ chỉ thiếu tự tin để đi sâu vào. Bạn có đang khám phá hoặc bạn đang mắc kẹt ở đâu đó không?

Tôi sẽ thêm rằng một điều phụ bạn có thể làm là đặt một trình quản lý thành phần ở giữa tất cả các đối tượng để tạo thuận lợi cho việc liên lạc. Trong quá khứ khi tôi đã làm một cái gì đó tương tự, đối tượng quản lý đã kết thúc chỉ lấy dữ liệu từ mỗi thành phần, kết hợp dữ liệu với nhau, và chuyển nó theo mô hình như một yêu cầu lớn. Mỗi thành phần của tôi có một đại biểu mà họ sẽ gọi và sẽ chuyển dữ liệu vào và tất nhiên việc thực hiện ủy quyền đó là trên người quản lý thành phần của tôi.

Tôi cũng cho phép đối tượng người quản lý đó hoạt động như một proxy cho mạng Tôi đang chờ sự phức tạp tăng cao hơn trước khi tôi tôn trọng SRP và tạo trách nhiệm đó cho lớp riêng của mình.

Về cơ bản, mọi thứ bạn nói đều hay. Tôi khuyên bạn nên đi sâu vào và khám phá.

Các vấn đề liên quan