Có rất nhiều câu trả lời cho câu hỏi, nhưng tôi cảm thấy cần có một câu trả lời thực sự đơn giản so sánh rõ ràng giữa hai câu hỏi. Đây là cuộc thảo luận tôi đã tạo khi người dùng tìm kiếm tên phim trong ứng dụng MVP và MVC:
Người dùng: Nhấp vào nhấp vào
Xem : Ai vậy? [ MVP | MVC ]
Thành viên: Tôi vừa bấm vào nút tìm kiếm
Xem : Ok, chờ một giây. [ MVP | MVC ]
( Xem gọi người thuyết trình | Trình điều khiển từ khóa ) [ MVP | MVC ]
Xem : Hey Người thuyết trình | Trình điều khiển , một Người dùng vừa nhấp vào nút tìm kiếm, tôi phải làm gì? [ MVP | MVC ]
Người trình bày | Trình điều khiển : Hey View , có bất kỳ thuật ngữ tìm kiếm nào trên trang đó không? [ MVP | MVC ]
Xem : Có, ở đây là làng piano piano [ MVP | MVC ]
Người dẫn chương trình : Cảm ơn Chế độ xem , khi đó tôi đang tìm kiếm cụm từ tìm kiếm trên Mô hình , vui lòng chỉ cho anh ấy / cô ấy một thanh tiến trình [ MVP | MVC ]
( Người thuyết trình | Trình điều khiển đang gọi Model Model ) [ MVP | MVC ]
Người trình bày | Điều khiển : Hey mẫu , Bạn có bất cứ trận đấu cụm từ tìm kiếm này ?: “piano” [ MVP | MVC ]
Mô hình : Hey Người trình bày | Bộ điều khiển , hãy để tôi kiểm tra [ MVP | MVC ]
( Người mẫu đang thực hiện truy vấn cơ sở dữ liệu phim ') [ MVP | MVC ]
( Sau một lúc ... )
-------------- Đây là lúc MVP và MVC bắt đầu phân kỳ ---------------
Mô hình : Tôi đã tìm thấy một danh sách cho bạn, Người trình bày , đây là trong JSON [["name": "Piano teacher", "year": 2001}, {"name": "Piano", "year": 1993} ] [[ MVP ]
Mô hình : Có một số kết quả có sẵn, Bộ điều khiển . Tôi đã tạo một biến trường trong ví dụ của mình và điền vào kết quả. Tên của nó là "searchResultsList" [ MVC ]
( Người thuyết trình | Trình điều khiển cảm ơn Người mẫu và quay lại Chế độ xem ) [ MVP | MVC ]
Người thuyết trình : Cảm ơn vì đã chờ Xem , tôi đã tìm thấy một danh sách kết quả phù hợp với bạn và sắp xếp chúng theo định dạng có thể trình bày: ["Piano teacher 2001", "Piano 1993"]. Vui lòng hiển thị nó cho người dùng trong một danh sách dọc. Ngoài ra, vui lòng ẩn thanh tiến trình ngay bây giờ [ MVP ]
Trình điều khiển : Cảm ơn vì đã chờ Xem , tôi đã hỏi Model về truy vấn tìm kiếm của bạn. Nó nói rằng nó đã tìm thấy một danh sách các kết quả phù hợp và lưu trữ chúng trong một biến có tên là "searchResultsList" bên trong thể hiện của nó. Bạn có thể lấy nó từ đó. Ngoài ra, vui lòng ẩn thanh tiến trình ngay bây giờ [ MVC ]
Xem : Cảm ơn bạn rất nhiều Người trình bày [ MVP ]
Chế độ xem : Cảm ơn bạn "Trình điều khiển" [ MVC ] (Bây giờ Chế độ xem đang tự đặt câu hỏi: Tôi nên trình bày kết quả tôi nhận được từ Mô hình cho người dùng như thế nào? Năm sản xuất của bộ phim nên đến trước hay cuối ...? nằm trong danh sách dọc hay ngang? ...)
Trong trường hợp bạn quan tâm, tôi đã viết một loạt bài viết liên quan đến các mẫu kiến trúc ứng dụng (MVC, MVP, MVVP, kiến trúc sạch, ...) kèm theo repo Github tại đây . Mặc dù mẫu được viết cho Android, các nguyên tắc cơ bản có thể được áp dụng cho bất kỳ phương tiện nào.