آموزش معماری MVVM در اندروید (قسمت اول)

در کنفرانس Google I/O در سال 2017، گوگل کامپوننت هایی را که شامل LiveData و ViewModel بودند رو به همراه معماری MVVM معرفی کرد.

در این دوره قصد دارم معماری MVVM را معرفی و در یک پروژه ساده پیاده سازی کنم.

اما MVVM چی هست؟

در برنامه نویسی برای نوشتن پروژه های نسبتا بزرگ مانند یک اپلیکیشن کامل برای بهینگی و نگه داری ساده تر کد ها از معماری های مختلف مانند MVC استفاده می‌شود. یکی از این معماری ها که تقریبا دنیای اندروید را به سمت خود می‌کشد MVVM هست.

معماری MVVM منطق برنامه و رابط کاربری برنامه را از هم جدا میکند و باعث می‌شود مدیریت برنامه ساده تر و خوانایی کد ها بیشتر شود.

معماری MVVM در اندروید به وسیله دو کامپوننت که LiveData و ViewModel پیاده سازی می‌شود.

این معماری از سه لایه تشکیل شده است:

۱- Model

لایه Model شامل کلاس هایی که داده ها در اونها قرار میگیرند، مانند کلاس دانشجویان، کاربران و ...

۲- View

لایه ای که اصطلاحا UI برنامه یا رابط کاربری برنامه را تشکیل میدهد که شامل کلاس های اکتیویتی ها و Adapter هاست.

۳- ViewModel

این لایه مهمترین لایه این معماری محسوب می‌شود که ارتباط بین دو لایه View و Model را با هم برقرار میکند. ViewModel به این صورت عمل میکند که با لایه Model ارتباط دارد و وظیفه آماده سازی observable (در انگلیسی به معنای قابل مشاهده) ها را برای observed شدن (مشاهده شدن) توسط لایه View دارد.

شکل زیر به درک بهتر این معماری کمک می‌کند.

معماری MVVM
معماری MVVM

همانطور که گفته شد، این معماری در اندروید با کامپوننت LiveData استفاده می‌شود.

اما LiveData چیست؟

یک کامپوننت معماری تازه معرفی شده است. LiveData یک نگهدارنده داده observable است. LiveData تغییرات را رصد میکند و تاثیر این تغییرات را بر View ها اعمال میکند. در واقع LiveData پل ارتباطی میان View و ViewModel است. برای مثال یک اکتیویتی را تصور کنید که از سرور لیست کاربران را دریافت و نمایش می‌دهد. در کلاس‌مان یک لیست به عنوان LiveData داریم که به عنوان Observable عمل می‌کند و در اکتیویتی اصلی این لیست را Observe میکنیم و نمایش می‌دهیم.




و اما شروع کار با MVVM

برای درک بهتر MVVM یک پروژه ساده می‌سازیم که لیستی از آلبوم ها را از سرور دریافت میکند و با استفاده از RecyclerView به کاربر نمایش می‌دهد. همچنین با کلیک بر روی یک آلبوم به صفحه آن آلبوم رفته و لیست آهنگ های آلبوم را نمایش می‌دهد.

یک پروژه جدید در اندروید استودیو ایجاد کنید. وارد فایل build.gradle برنامه شوید و کتابخانه های مورد استفاده را به پروژه اضافه کنید.

//Ui
implementation 'com.google.android.material:material:1.1.0'
implementation 'androidx.recyclerview:recyclerview:1.1.0'
implementation 'com.makeramen:roundedimageview:2.3.0'

//Network
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.squareup.retrofit2:retrofit:2.6.2'
implementation 'com.squareup.retrofit2:converter-gson:2.6.2'
implementation 'com.squareup.okhttp3:okhttp:4.2.0'
implementation 'com.github.bumptech.glide:glide:4.7.1'

//Mvvm
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.3.0-alpha01'`
implementation 'androidx.lifecycle:lifecycle-extensions:2.2.0'
annotationProcessor 'androidx.lifecycle:lifecycle-compiler:2.3.0-alpha01'


برای گذراندن این آموزش حتما باید تجربه کار با کتابخانه های Retrofit و Okhttp داشته باشید و مبحث ارتباط با اینترنت از طریق این کتابخانه ها را بلد باشید، در غیر این صورت این دوره برای شما زود هنگام هست.

در قسمت بعد کد نویسی پروژه را شروع میکنیم :)


لینک قسمت دوم:

https://virgool.io/@far7id/mvvm-architecture-part2-qzecvfd34ptk