معماری MVVM چیست ؟

معماری MVVM چیست ؟

امروز میخوام در مورد این معماری با شما کمی صحبت کنیم . اول سری بزنیم به معماری های مختلف اندروید

  • معماری MVC

خوشبختانه هر شخصی که به صورت خیلی خیلی مبتدی کد نویسی کند خود به خود MVC کار میکند

  • معماری MVP

با طراحی رابط ها یا interface هایی که در کد نویسی پیاده میکنید در واقع View هارو به Presenter متصل میکنید … در صورتی که دوست دارید نمونه ای از کد نویسی این معماری را تجربه کنید :

روی این لینک کلیک کنید



  • معماری MVVM

خب خیلی خلاصه توضیح میدم چون میدونم برنامه نویس جماعت حوصله خوندن نداره 🙂 در پایان هم میریم سراغ سورس کد از این معماری که توسط خودم خیلی خوانا نوشته شده .

تا اونجایی که من تحقیق کردم فهمیدم این معماری اجازه میده با استفاده از یک سری مقادیر مثل Livedata رابط کاربری یا UI رو به طور خودکار به روز کنید .

با استفاده از DataBinding که توسط گوگل ارائه شد به روز رسانی UI خیلی خیلی کار راحت تری شد .


چیزی که حدود یک هفته ای میشد درگیرم کرده بود انواع این ViewModel ها بود که توسط گوگل ارائه شده بود .

ViewModel
که با استفاده از LiveData اطلاعات رو به روز میکنه .



AndroidViewModel
که بسیار شبیه به نمونه ی بالا است با این تفاوت که در تابع سازنده میتونید Application یا Context رو بهش متصل کنید
نکته : برای اتصال context نیاز دارید تا کلاسی با ارث بری از ViewModelProvider.Factory بسازید


BaseObservable
این مورد یکی از پر استفاده ترین های این معماری است . یعنی تا اونجایی که من از سورس کدها دیدم ، همه ی خارجکی ها از این مورد استفاده میکنند 🙂 .

خیلی در موردش تحقیق کردم ، یعنی برام خیلی سوال شده بود که چرا اصلا ربطی به ViewModel نداره اما اسمش ViewModel میشه 😐

تا اینکه متوجه شدم از کلاسی ساخته شده که از ViewModel و Observable ارث بری میکنه که شده کلاسی به نام BaseObservable .

خوشبختانه با استفاده از DataBinding ها در BaseObservable به راحتی میتونید رابط کاربری خودتون رو به کدهای جاوا وصل کنید در نتیجه خیلی راحت UI به روز میشه .



خب حالا که متوجه شدید معماری MVVM چیست میتونید به صورت جنگی برید از لینک زیر سورس کد رو دانلود کنید 🙂

برای دانلود سورس کد به صفحه ی Github من مراجعه کنید .





دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *