2012-02-06 25 views
10

Chúng tôi đang làm việc với mẫu MVP, và tôi đã tự hỏi làm thế nào để đối phó với các hành động GUI.Trình bày có thực hiện GUI logic trong mẫu MVP không?

Ví dụ: khi người dùng muốn xóa một hàng khỏi lưới, người dùng nhấn nút xóa. Tại thời điểm này, bạn có thể làm hai việc:

1) Gọi _presenter.DeleteRow() và người trình bày sau đó gọi _view.SelectedRow. Sau đó, người trình bày gọi view.AskUserForConfirmation() và khi quay lại DialogResult.OK, người trình bày thực sự sẽ xóa đối tượng bên dưới và làm mới lưới.

2) Các hình thức yêu cầu người dùng xác nhận và khi DialogResultOK, sau đó được gọi là presenter.Delete(myObject) HOẶC presenter.Delete() được gọi và trong phương pháp Delete đối tượng được lấy bằng cách gọi _view.SelectedRow.

Làm cách nào để bạn xử lý các loại tình huống này?

Trả lời

4

Mẫu MVP được cho là phân tách quyền truy cập logic, chế độ xem và dữ liệu của bạn. Vì vậy, khi cố gắng quyết định nơi nào đó nên đi, hãy tự hỏi nếu có logic kinh doanh thực tế trong những gì bạn đang cố gắng làm.

Bạn có muốn lớp doanh nghiệp của mình có logic về hiển thị cửa sổ bật lên không? Chắc là không. Nó chỉ là một thông báo xác nhận. Bạn có thể muốn có một lớp trợ giúp tạo ra cửa sổ pop up cách điệu của bạn, nhưng đó là riêng biệt từ lớp Presenter của bạn.

2

Tùy chọn 2. Yêu cầu xác nhận là trách nhiệm giao diện người trình bày mà người trình bày không cần phải lo lắng. Tôi không liên quan đến người trình bày cho đến khi đến lúc thực sự làm điều gì đó cho mô hình, hoặc cho đến khi một số logic nghiệp vụ phức tạp cần được gọi.

Điều này không có nghĩa là tùy chọn 1 không hợp lệ. Nó chỉ tạo ra không cần thiết xem/thuyết trình viên, theo ý kiến ​​của tôi.

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