Sự khác biệt giữa MVP và kiến ​​trúc sạch


13

Câu hỏi là tự giải thích, chỉ để thêm suy nghĩ của tôi:
Theo như tôi đã đọc, Lớp trình bày trong Clean arch có trách nhiệm giống như trong MV trong MVP.

Làm thế nào một người quyết định chọn một mẫu thay vì mẫu kia?


MVP là một phần của kiến ​​trúc sạch, Bài viết này nên được đọc androidwave.com/android-mvp-arch architecture
Surya Prakash Kushawah

Câu trả lời:


15

Cái mà Bob Martin gọi là " Kiến trúc sạch " là một "kiến trúc meta", một hướng dẫn cấp cao để tạo ra các kiến ​​trúc phân lớp. Nó không nói bất cứ điều gì như

"Phải có lớp Mô hình, lớp Xem và lớp Trình bày và chúng phải được triển khai bằng MVP ",

nó chỉ chứa các quy tắc chung hơn cho các lớp như "các phụ thuộc phải đi từ các vòng tròn bên ngoài đến các vòng tròn bên trong, chứ không phải ngược lại" . Và vì trong MVP, Chế độ xem (= UI) có thể biết Người trình bày, nhưng Người trình bày được tách rời khỏi Giao diện bằng giao diện, MVP chỉ là một trong nhiều giải pháp khả thi đáp ứng quy tắc này.

Tất nhiên, người ta có thể sử dụng MVP trong một hệ thống "Kiến trúc sạch", nhưng đây không phải là cách tiếp cận đúng duy nhất. Bất kỳ thiết kế giao diện người dùng nào có "lớp bên trong" không biết gì đặc biệt về giao diện người dùng và giao diện người dùng cũng tuân theo các quy tắc "Kiến trúc sạch" khác được mô tả trong bài viết của Bob Martin sẽ ổn.


nếu tôi theo mô hình MVP, có đảm bảo rằng tôi đã không vi phạm các quy tắc kiến ​​trúc sạch không?
Mehrdad Shokri

1
@Mehrdad: không. MVP chỉ giúp bạn có được "Quy tắc phụ thuộc" đúng và chỉ giữa các lớp View & Presenter, cũng như giữa Presenter và Model, không hơn không kém. Bạn vẫn phải quan tâm đến tất cả những điều khác được mô tả trong bài viết của Bob Martin. Ví dụ, một mình MVP không ngăn ai vượt qua các cấu trúc dữ liệu phức tạp giữa các lớp (trái ngược với các cấu trúc dữ liệu đơn giản được đề cập trong bài viết đó nên được sử dụng để vượt qua các ranh giới).
Doc Brown
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.