Chào mừng bạn đến một dốc trơn trượt. Đến thời điểm này, bạn đã nhận ra rằng có một sự biến đổi vô tận của tất cả các tương tác xem mô hình. MVC, MVP (Taligent, Cá heo, Chế độ xem thụ động), MVVM chỉ để đặt tên cho một số ít.
Mẫu Trình bày Mô hình Chế độ xem, giống như hầu hết các mẫu kiến trúc được mở cho nhiều thử nghiệm và đa dạng. Một điểm chung của tất cả các biến thể là vai trò của người trình bày với tư cách là "người trung gian" giữa chế độ xem và mô hình. Hai phổ biến nhất là Chế độ xem thụ động và Trình điều khiển / Trình điều khiển giám sát - [ Fowler ]. Chế độ xem thụ động coi giao diện người dùng là giao diện rất nông giữa người dùng và người trình bày. Nó chứa rất ít nếu có logic, ủy thác càng nhiều trách nhiệm cho người trình bày. Giám sát / Người điều khiểncố gắng tận dụng sự ràng buộc dữ liệu được tích hợp trong nhiều khung UI. UI xử lý đồng bộ hóa dữ liệu nhưng các bước của người trình bày / bộ điều khiển để logic phức tạp hơn. Trong cả hai trường hợp, mô hình, khung nhìn và người trình bày tạo thành một bộ ba
Có rất nhiều cách để làm điều này. Rất phổ biến để xem điều này được xử lý bằng cách coi mỗi hộp thoại / biểu mẫu là một chế độ xem khác nhau. Nhiều lần có mối quan hệ 1: 1 giữa lượt xem và người thuyết trình. Đây không phải là một quy tắc khó, nhanh. Nó khá phổ biến để có một người thuyết trình xử lý nhiều quan điểm liên quan hoặc ngược lại. Tất cả phụ thuộc vào sự phức tạp của quan điểm và sự phức tạp của logic kinh doanh.
Đối với cách các khung nhìn và người thuyết trình có được một tham chiếu với nhau, điều này đôi khi được gọi là hệ thống dây điện . Bạn có ba lựa chọn:
Chế độ xem giữ tham chiếu đến người trình bày
Một biểu mẫu hoặc hộp thoại thực hiện chế độ xem. Biểu mẫu có các trình xử lý sự kiện chỉ định cho người trình bày bằng cách sử dụng các lệnh gọi trực tiếp:
MyForm.SomeEvent(Sender)
{
Presenter.DoSomething(Sender.Data);
}
Vì người trình bày không có tham chiếu đến chế độ xem, nên chế độ xem phải gửi dữ liệu đó dưới dạng đối số. Người thuyết trình có thể giao tiếp trở lại chế độ xem bằng cách sử dụng các chức năng sự kiện / gọi lại mà chế độ xem phải lắng nghe.
Người trình bày giữ một tham chiếu để xem
Trong kịch bản, khung nhìn hiển thị các thuộc tính cho dữ liệu mà nó hiển thị cho người dùng. Người trình bày lắng nghe các sự kiện và thao tác các thuộc tính trên khung nhìn:
Presenter.SomeEvent(Sender)
{
DomainObject.DoSomething(View.SomeProperty);
View.SomeOtherProperty = DomainObject.SomeData;
}
Cả hai đều có một tham chiếu với nhau tạo thành một phụ thuộc vòng tròn
Kịch bản này thực sự dễ làm việc hơn các đối tượng khác. Khung nhìn phản ứng với các sự kiện bằng cách gọi các phương thức trong người trình bày. Người trình bày đọc / sửa đổi dữ liệu từ chế độ xem thông qua các thuộc tính được hiển thị.
View.SomeEvent(Sender)
{
Presenter.DoSomething();
}
Presenter.DoSomething()
{
View.SomeProperty = DomainObject.Calc(View.SomeProperty);
}
Có những vấn đề khác cần được xem xét với các mẫu MVP. Thứ tự tạo, tuổi thọ đối tượng, nơi diễn ra hệ thống dây điện, liên lạc giữa các bộ ba MVP nhưng câu trả lời này đã phát triển đủ lâu rồi.