13

Cấu phần Kiến trúc Android Mới được phát hành trên google IO 17.Cấu phần kiến ​​trúc Android với MVP

Vì vậy, chúng ta nên sử dụng MVP với thành phần kiến ​​trúc và MVVM?

Trong mẫu Google trên Github, họ đã sử dụng mô hình MVVM. Google Sample

+0

Câu trả lời đơn giản là "nó phụ thuộc" - MVVM có đường cong học tập cao hơn kiến ​​trúc MVC tiêu chuẩn nhưng mang lại lợi ích về khả năng kiểm thử. Tuy nhiên, loại câu hỏi này không thực sự về chủ đề trên StackOverflow. Vui lòng xem [help/on-topic] –

Trả lời

9

Giới thiệu về lựa chọn mẫu kiến ​​trúc và cách triển khai, nó luôn phụ thuộc vào nhiều yếu tố như thành viên nhóm, loại ứng dụng, v.v.
Trong bài đăng trên blog của Google, họ đã nói rằng Các thành phần kiến ​​trúc chủ yếu là

Ý kiến ​​không phải đơn thuốc.

Tuy nhiên, ba thành phần chính (Room, ViewModel, ViewData) được phát triển với mức sử dụng rộng nhưng không tập trung vào bất kỳ mẫu cụ thể nào.
Ví dụ,

  • Nếu bạn đang sử dụng SQLite để tồn tại dữ liệu địa phương trong ứng dụng của bạn, bạn có thể bạn Phòng không có vấn đề gì loại mô hình bạn đang sử dụng, nó thực sự là một thư viện lớn với rất nhiều các lợi ích như giảm bớt tấm lò hơi mã, xác nhận cú pháp SQLite trong thời gian biên soạn, v.v.
  • Bên cạnh đó, LifeCycle, LiveData và ViewModel có các điểm mạnh . Đặc biệt, họ giải quyết các vấn đề xử lý vòng đời thực sự tốt.
  • LiveData cung cấp cho bạn thêm một công cụ của mẫu quan sát xử lý luồng dữ liệu một cách phản ứng. (Giống như một tính năng tuyệt vời mà RxJava cung cấp cho chúng tôi).
  • ...

Cuối cùng, cho câu hỏi của bạn.

Vì vậy, chúng ta có nên sử dụng MVP với các thành phần kiến ​​trúc không?

Câu trả lời là "đó là phần hay của khung công tác Android, vậy tại sao không".

Cập nhật:
Nếu bạn muốn xem làm thế nào một dự án mô hình MVP làm việc với mới Kiến Trúc Linh kiện, xin vui lòng kiểm repository on Github tôi. Trong đó tôi nâng cao mô hình MVP trước đó bằng cách sử dụng Room for persistence local và LifeCycle để tạo ra Presenter vòng đời.

+0

Tại sao bạn không sử dụng thành phần kiến ​​trúc ViewModel để làm cho người trình bày tồn tại trong hoạt động tái tạo hoặc thay đổi cấu hình? Imho nó sẽ cung cấp cho bạn những lợi thế lớn: Tôi đã nhìn vào repo github này và nó đã giúp tôi rất nhiều -> https://github.com/armcha/MVP-Architecture-Components –

+0

Bạn không cần phải sử dụng ViewModel để làm cho Người trình bày biết về vòng đời của Activity. Chỉ cần triển khai LifecycleObserver, ví dụ: https://github.com/quangctkm9207/mvp-android-arch-component/blob/master/app/src/main/java/com/quangnguyen/stackoverflowclient/ui/questions/QuestionsPresenter. java –

+0

Tôi đã không nói về làm cho vòng đời của người trình bày nhận thức .. Tôi đã nói về tính đặc thù của viewmodels đó là để tồn tại hoạt động tái tạo .. Vì vậy, bạn không cần phải thực hiện onSaveInstanceState, onRestoreInstanceState và tất cả những thứ đó :) –

4

Tôi hiện đang xây dựng một dự án mẫu có sử dụng MVP mẫu cùng với các thành phần kiến ​​trúc của Google (phòng, LiveData), và so sánh để trộn phiên bản của Realm và LiveData:

https://github.com/duyp/mvp-template

Tôi nghĩ rằng một số Google Kiến trúc thành phần tương thích với MVP Pattern, không chỉ đối với MVVM: D

Bạn có thể kiểm tra 2 following branches:

  • realm_livedata: MVP với Realm và LiveData

  • room_livedata: MVP với thư viện Phòng kiên trì và LiveData

Đó là phức tạp hơn nhiều so với dự án Google sample (tôi đã sử dụng Dagger 2, RxAndroid, Retrofit, Gson, và sạch kiến ​​trúc) hy vọng bạn tìm thấy một giải pháp tốt hơn cho công việc của bạn. Nếu có bất kỳ câu hỏi hoặc gợi ý nào, bạn có thể để lại nhận xét hoặc sự cố trên my github project.

Tôi cũng tạo ra một dự án sử dụng MVVM với các thành phần kiến ​​trúc mới của Google với Realm, Dagger 2, Live dữ liệu: https://github.com/duyp/mvvm-template

Chúc mừng mã hóa!

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