2012-03-19 28 views
5

Tôi đang cố gắng phát triển một Hệ thống quản lý dự án trong ứng dụng của mình theo mẫu Model View Presenter (MVP). Câu hỏi của tôi là điều này, tôi đã thấy rất nhiều ví dụ về MVP nhưng tôi đã không nhìn thấy một với một Presenter và nhiều lần xem. Ví dụ: khi người dùng mở một dự án, cùng một dữ liệu dự án có thể được xem bằng treeview, biểu dữ liệu và biểu đồ. Làm thế nào để đối phó với điều đó?Winforms MVP với nhiều chế độ xem và một người trình bày

Trả lời

2

Để làm cho mã được tách riêng và dễ bảo trì, tôi khuyên bạn nên có một người trình bày cho mỗi Chế độ xem ngay cả khi chúng trông rất giống nhau: để mỗi chế độ xem sẽ có logic trình bày riêng. Nếu bạn có cùng dữ liệu cần được hiển thị trên nhiều chế độ xem, bạn có thể chia sẻ Chế độ xem giữa người thuyết trình nhưng một lần nữa tôi khuyên bạn nên sử dụng mô hình xem khác nhau cho từng người trình bày (ngay cả khi họ rất giống nhau)

+0

Vì vậy, bạn tin rằng mặc dù có sự trùng lặp mã thì tốt hơn là nên thực hiện theo cách đó. Tôi cũng có sử dụng mẫu người quan sát để cập nhật tất cả các chế độ xem có liên quan không? – Dimitris

+0

nếu các trang chính xác giống nhau nhưng bạn chỉ hiển thị "một nhãn khác" trên mỗi trang, bạn có thể tạo một người trình bày, một mô hình và một chế độ xem. Người trình bày sẽ chứa logic để hiển thị giao diện người dùng phù hợp. Mỏ là câu trả lời chung –

2

Cách bạn thực hiện, là trừu tượng chế độ xem của bạn bằng cách đặt nó sau giao diện và sau đó kết nối người trình bày với triển khai cụ thể chế độ xem của bạn.

Điều đó nói rằng, tôi không chắc chắn bạn sẽ bao giờ muốn làm điều đó trong thế giới thực. Sự khác biệt giữa giao dịch với chế độ xem dạng cây so với biểu đồ có nghĩa là bạn sẽ kết thúc việc khái quát hóa mọi thứ trong giao diện xem của mình và viết nhiều mã lộn xộn để bạn thực hiện hợp đồng.

Tôi khuyên bạn nên giữ người trình bày của mình xem tỷ lệ 1: 1. Nếu bạn muốn nhiều lượt xem trên cùng một dữ liệu thì đó là mô hình của bạn mà bạn nên chia sẻ trên các diễn giả, vì vậy bạn đang hiển thị cùng một dữ liệu theo các cách khác nhau.

1

Bạn hầu như luôn luôn có một cá thể người trình bày cho mỗi trường hợp xem.

Giả sử bạn mở CustomerView và CustomerViewPresenter của nó. Đó là một ví dụ của mỗi.

Bạn mở một CustomerView khác và một phiên bản CustomerViewPresenter khác. Đó là hai trường hợp của mỗi.

Điều đó không có nghĩa là người trình bày nhất định luôn phải sử dụng cùng một chế độ xem, thực tế là không nên. Người trình bày nên nói chuyện với một giao diện xem. Bạn có thể hoán đổi chế độ xem thực cho chế độ xem giả để thử nghiệm.

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