Trong tâm trí, sự khác biệt cho tất cả các biến thể của mẫu Chế độ xem mô hình (MVP, Passive View, Supervising Controller, Xem mô hình, etc.) khá tinh tế. Đó là tất cả về những người xử lý dữ liệu và lấy dữ liệu từ ai, thực sự. Tất cả họ đều đang cố gắng giải quyết cùng một vấn đề, tách riêng một điều gì đó từ một điều khác và các giải pháp thực hiện tất cả điều đó theo cách tương tự.
Nó gần như là hiển nhiên rõ ràng rằng các khái niệm tương tự trong việc thực hiện khi bạn nghĩ về nó trong điều kiện thị giác:
Simplistic MVC:
+-------+ manipulates data
| Model |<---------------------+
+-------+ |
| |
| gets data |
v |
+------------+ serves data +------+
| Controller |------------->| View |
+------------+ +------+
Simplistic MVP:
+-------+
| Model |
+-------+
|^
| | get/manipulates data
v |
+-----------+ serve data +------+
| Presenter |-------------->| View |
| |<--------------| |
+-----------+ tell changes +------+
Họ giống nhau ở chỗ hệ thống phân cấp lớp có thể trông giống nhau ở cả hai. Tuy nhiên, sự khác biệt là những cách hiển thị và thao tác dữ liệu khác nhau. Khi bạn tung ra MVC của riêng bạn thì bạn sẽ chịu trách nhiệm về cách thức nó trông như thế nào. Nó không thực sự quan trọng vì chúng đều dựa trên nguyên tắc phân tách các đoạn mã thành các thực thể logic tự phục vụ và giảm trùng lặp mã. Miễn là bạn giữ code coupling low nó sẽ làm việc ra độc đáo cuối cùng. Nó chỉ quan trọng nếu bạn muốn được theo cách giáo lý với kiến trúc của ứng dụng của bạn.
Hãy thực dụng về điều đó và làm điều đó phù hợp với nhu cầu của bạn tốt nhất vì bạn sẽ kết thúc với một bản mix. Nó phải là "khá" dễ dàng để chuyển đổi giữa các biến thể tùy thuộc vào nhu cầu xem. Tuân theo nguyên tắc SOLID và bạn nên làm tốt. (Xem thêm this about SOLID).
Tôi khuyên bạn nên xem xét nếu có khung MVC hoặc MVP để xem cách thực hiện.
+ 1..always tăng giá sơ đồ ASCII trong câu trả lời. –
spoike: phản ứng của bạn là khá giải thích .. Cảm ơn. – Sumeet