2010-09-28 32 views
5

Tôi có một thiết lập MVP (thụ động), và nó đang diễn ra khá tốt. Gần đây tôi đọc Martin Fowlers mô tả về điều này (http://martinfowler.com/eaaDev/PassiveScreen.html) và ông viết "Một lợi thế khác mà Passive View là một cơ chế rất rõ ràng. Có rất ít sự phụ thuộc vào cơ chế Observer hoặc ánh xạ khai báo. "Câu hỏi chung về mô hình xem-người trình bày (C#), mô hình có nên biết người trình bày không?

Trong MVP của tôi, tôi có mô hình hoàn toàn không biết gì về người trình bày và thông tin từ người mẫu đến người trình bày được xử lý bởi sự kiện. Tôi khởi tạo MVP của mình trong chế độ xem bằng cách gọi hàm ctor của người trình bày, ví dụ: new Presenter (this, new Model()) (nơi này đề cập đến khung nhìn).

Câu hỏi của tôi là, tôi có nên làm cho mô hình biết về người trình bày sao cho nó có thể gọi trực tiếp logic trình bày thay vì sử dụng sự kiện?

Trả lời

6

Không, bạn không nên. Nếu bạn đã làm, mô hình của bạn sẽ được kết hợp chặt chẽ với lớp trình bày của bạn, làm cho nó vô dụng bên ngoài bối cảnh đó. Hơn nữa, việc thử nghiệm, gỡ lỗi và duy trì lớp mô hình của bạn sẽ trở nên có vấn đề hơn.

+0

Sau đó, làm thế nào Martin Fowler thậm chí có thể nghĩ đến việc nói rằng chế độ xem thụ động có rất ít sự phụ thuộc vào các cơ chế quan sát? Có lẽ anh ta có nghĩa là cơ chế liên kết trực tiếp với mô hình (thông qua các sự kiện, ví dụ)? – lejon

+0

Bởi vì người thuyết trình ra lệnh cho chế độ xem thụ động (trong khi chế độ xem đang kích hoạt yêu cầu ít nắm tay hơn, nếu bạn muốn). Nói cách khác, chế độ xem thụ động không quan sát người trình bày, nhưng người trình bày đang quan sát mô hình (và ra lệnh cho chế độ xem tương ứng). –

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