Android: MVVM architecture pattern

8
Nguyễn Van Dại viết hơn 7 năm trước

1: MVVM architecture pattern

  • MVVM là viết tắt của Model –View – ViewModel. MVVM được phát triển dựa trên kiến trúc MVP, có cấu trúc khá tương đồng
  • Hình ảnh dưới đây sẽ mô tả về mối quan hệ giữa các thành phần trong pattern này.

alt

View : Thành phần giao diện của ứng dụng.

View là thành phần duy nhất mà người dùng có thể tương tác được trong chương trình, nó chính là thành phần mô tả dữ liệu. Trong lập trình android, View là một activity, fragment, hay một custom view...
Sau đây là một số hành động mà view có thể thực hiện:

  • Starting activity
  • Lắng nghe sự kiện từ người dùng
  • Hiển thị Toat, Dialog , Snackbars.

ViewModel

ViewModel là một abstraction của View. Nó sẽ lấy dữ liệu từ tầng Model, xửu lý UI logic sau đó hiển thị data có liên quan tới view. ViewModel sẽ không có bất kỳ behavior nào để tương tác với View. Như vậy để nhận biết khi nào cần hiển thị dư liệu, View sẽ đăng ký nhận notification từ ViewModel.
Một số chức năng cụ thể mà ViewModel có thể thực hiện :

  • Truy suất và thông báo hiển thị dữ liệu cho view.
  • Xử lý visibility của View
  • Xác thực dữ liệu đầu vào
  • … ViewModel chỉ nên biết về application context. Chúng ta chỉ nên thực hiện một số hành động liên quan đến context tại ViewModel như sau :
  • Start a service
  • Bind to a service
  • Gửi một broadcast
  • Đăng ký broadcast receiver
  • Load resource values

ViewModel không nên:

  • Hiện thị một dialog
  • Start activity
  • Inflate layout

Model

Model chứa phần data được lấy từ nhiều nguồn khác nhau, ví dụ như:
• REST API
• Realm db
• SQLite db
• Handles broadcast
• Shared Preferences
• Firebase
• …
Model sẽ chứa toàn bộ business logic, mix giữa các luồng dữ liệu( giữa local data và remote data) trước khi dữ liệu đó được hiển thị cho client.

2: Kết luận

  • Cũng giống như MVP, MVVM thực hiện abtract trạng thái và thể hiện của View, cho phép chúng ta phân tách rõ ràng việc phát triển giao diện với xử lý business logic. MVVM đã kế thừa những ưu điểm vốn có của MVP, kết hợp với những lợi thế của data binding đem đến một pattern có khả năng phân chia các thành phần với từng chức năng riêng biệt, dễ dàng trong việc maintain, redesign. MVVM cũng đem lại khả năng test rất dễ dàng.

source code: Source
Nguồn tham khảo:
http://www.vogella.com/tutorials/AndroidArchitecture/article.html
https://lequangkhai.wordpress.com/2011/04/18/m-hnh-mvvm-gi%E1%BB%9Bi-thi%E1%BB%87u/

Bình luận


White
{{ comment.user.name }}
Hay Bỏ hay
{{ comment.like_count}}
White

Nguyễn Van Dại

15 bài viết.
0 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}

  Cùng một tác giả


{{like_count}}

kipalog

{{ comment_count }}

Bình luận


White
{{userFollowed ? 'Following' : 'Follow'}}
15 bài viết.
0 người follow

 Đầu mục bài viết

 Cùng một tác giả