الگوی یا معماری MVVM چیست؟

آموزش معماری MVVM در اندروید ( آموزش Android MVVM Architecture )اموزش معماری mvvm در اندروید و دیگر زبان های برنامه نویسی از واجبات برنامه نویسان حرفه ای شده. به خاطر همین در چندین سال گذشته معماری هایی زیادی مثل: MVC , MVP یا معماری MVVM و Clean Architecture وارد ساخت و توسعه اپلیکیشن های نه فقط اندروید بلکه آی او اس شده اند. و اگه بخوای اپلیکیشنی قوی، قابل توسعه و قابل تست داشته باشی. باید معماری یا الگو مناسب برای اپلیکیشن پیاده سازی کنی. برای یادگیری معماری mvvm در اندروید که پروژه محور باشد. میتونی دوره معماری mvvm در اندروید رو تهیه کنی.از معروف ترین انواع الگو طراحی یا معماری در برنامه نویسی(MVVM (Model, View, View Model(MVP (Model, View, Presenter(MVC (Model, View, Controllerآشنایی با معماری MVVM در اندرویداین معماری یک الگوی سه لایه ای Model – View – View Model هست. شما خونه سه طبقه در نظر بگیر. که هر طبقه به ترتیب از راست به چپ در تصویر از طبقه بالا تر به طبقه پایین تر میره. معماری مورد علاقه گوگله و کامپوننت هایی به اسم نه چندان خوب Android. Arch برای آن طراحی کرده. https://virgool.io/p/fpovk1jjvver/%D9%88%DB%8C%D9%88%D8%A8%D9%87%D9%88%DB%8C%D9%88%D9%85%D8%AF%D9%84%D9%85%DB%8C%DA%AF%D9%87%DA%86%D9%87%DA%86%DB%8C%D8%B2%DB%8C%D9%86%DB%8C%D8%A7%D8%B2%D8%AF%D8%A7%D8%B1%D9%87%D9%88%D8%AF%D8%B1%D8%AE%D9%88%D8%A7%D8%B3%D8%AA%D8%B4%D9%88%D9%85%DB%8C%D8%AF%D9%87.%D8%A8%D8%B9%D8%AF%D9%88%DB%8C%D9%88%D9%85%D8%AF%D9%84%D8%A8%D9%87%D9%85%D8%AF%D9%84%D9%85%DB%8C%DA%AF%D9%87%D8%A8%D8%B1%D8%A7%DB%8C%D9%85%D9%86%D8%A8%D8%B1%D9%88%D8%AF%DB%8C%D8%AA%D8%A7%DB%8C%DA%A9%D9%87%D9%85%DB%8C%D8%AE%D9%88%D8%A7%D9%85%D8%B1%D9%88%D8%A8%DB%8C%D8%A7%D8%B1.%D9%88%D9%85%D8%AF%D9%84%D9%85%DB%8C%D8%B1%D9%87%D8%AF%DB%8C%D8%AA%D8%A7%D9%85%D9%88%D8%B1%D8%AF%D9%86%DB%8C%D8%A7%D8%B2%D8%B1%D9%88%D9%85%D8%AF%D9%84%D8%B3%D8%A7%D8%B2%DB%8C%D9%85%DB%8C%DA%A9%D9%86%D9%87.%D8%A8%D9%87%D8%B5%D9%88%D8%B1%D8%AA%DB%8C%DA%A9%D9%87%D9%82%D8%A7%D8%A8%D9%84%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87%D8%A8%D8%A7%D8%B4%D9%87%D9%85%DB%8C%D8%AF%D9%87%D8%A8%D9%87%D9%88%DB%8C%D9%88%D9%85%D8%AF%D9%84%D9%88%D8%A8%D8%B9%D8%AF%D9%87%D9%85%D8%A7%DB%8C%D9%86%D9%88%DB%8C%D9%88%D9%85%D8%AF%D9%84%D8%AA%D8%AD%D9%88%DB%8C%D9%84%D9%88%DB%8C%D9%88%D9%85%DB%8C%D8%AF%D9%87%DA%A9%D9%87%D9%86%D9%85%D8%A7%DB%8C%D8%B4%D8%B4%D8%A8%D8%AF%D9%87%D8%A8%D9%87%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1. آقای جان گاسمن که mvvm رو برای استفاده به جای الگوهای MVC و MVP طراحی کرده. که زمان استفاده از Data Binding پیشنهاد شده. که جداسازی رابط کاربری از business logic و مدل داده (Data model) برنامه را بهبود می دهد. به طور ساده تر اینکه، دیگه نیای کل کدهای که بلدی رو بیای داخل یه اکتیویتی بزاری. که بعدا ندونی با اون همه کد چی کار کنی. و همش هم ارور داشته باشی. جداسازی کدهای قسمت های مختلف رو مد نظر داشته باشی.پس از مزیت های استفاده از معماری MVVMاجزای رابط کاربری کامل از منطق برنامه جداست.منطق برنامه از عملیات دیتابیسی جداست.خوانش و فهم کد بسیار ساده تره.مدیریت life cycle بسیار آسان تر انجام میشه. مثلا وقتی کاربر در حالتی مشخصی از برنامه میاد بیرون و چند دیقه بعد برمی گرده، برنامه تو همون حالتی است که کاربر اون رها کرده. یه بهتره بگیم جایگزین استفاده از onSaveInstanceState شده.طبقه یا لایه ویو Viewقسمتی را که کاربران می بینند را ویو میگن. مثل: اکتیویتی ها، فرگمنتها، لیست ویو ها و … در لایه ویو فایل های xml با کلاس های جاوا در ارتباط می باشند. لایه View با لایه Model ارتباطی با هم ندارند و View با ViewModel در ارتباط است.در View میتوان کارهای زیر را انجام داد:نمایش منو ها Menuمجوز ها Permissionsرویداد ها Event Listenerنمایش دیالوگ هانمایش Toast و SnackBarWorking with Android View and WidgetStart Activitiesو تمام کارهای مرتبط با Contextطبقه یا لایه مدل Modelهر چیزی که به داده مربوط میشه تو این طبقه ست چون برای بروز رسانی اطلاعاتی که کاربر میبینه باید طبقه مدل تغییر کرده باشه.اطلاعاتی یا دیتای که می‌تونیم از طبقه مدل بگیریم، به عنوان مثال:RestFull APISQLite dbHandles broadcastShared PreferencesFirebaseطبقه Model از طبقه View یا طبقه ViewModel اطلاعی ندارد و به طور مستقل کار میکند. اگر یک برنامه‌ی که قبلاً بر اساس الگوی MVC یا MVP ساخته شده است، به MVVM منتقل کنید ، لایه‌ی Model به احتمال زیاد نیازی به تغییر نخواهد داشت چون وابسته به لایه های دیگر نبوده و براحتی قابل انتقال می باشد. برای آموزش viewmodel در اندروید به صورت کامل و پروژه محور، میتونی آموزش معماری mvvm در اندروید تهیه کنی.وظایف لایه view model:دادن دیتا به لایه ویو برای نمایش اطلاعاتمنتشر کردن وضعیت دیتاها مانند ProgressBar , نمایش خطاها و …مدیریت نمایش/مخفی نمودن کنترل هامدیریت Validation کنترل هااجرای متدهای Modelنمایش اطلاعات خروحی Model در ViewViewModel ها فقط باید درباره‌ی Context اطلاعات داشته باشد. Context می‌تواند شامل موارد زیر باشند :اجرای اکتیویتی جدید start Activity‌Bind کردن سرویس هاارسال سرویس های BroadcastRegister کردن سرویس های Broadcastاستفاده از منابع Resourceکارهایی که نباید در ViewModel انجام داد شامل موارد زیر است :نمایش دیالوگ ها DialogStart کردن اکتیویتی هاinflate کردن لایوت ها برای View هادو مدل پیاده سازی معماری MVVM در اندروید :DataBindingRxJavaدیتا بایندینگ Data Binding در اندروید از جمله کتابخانه های مشهور در JetPack اندروید میباشد که به منظور اتصال دادن داده ها بطور مستقیم در Xml Layout است. حتما پیشنهاد میشود قبل از اینکه معماری MVVM را شروع کنید با کتابخانه DataBinding آشنا شوید.چگونه ممکن است به برخی از کلاس ها بدون داشتن مرجع از آن اطلاع داده شود؟با استفاده از Two Way Data Bindingاز LiveDataو همچنین از RxJavaاز جمله موارد مهم قابل اشاره این است. که دیگر نیازی به استفاده از Interface و یا کتابخانه هایی مانند EventBus نیست. و LiveData اینکار را برعهده می گیرد.در کل:تو این مقاله به بررسی معماری MVVM در برنامه نویسی در اندروید پرداختیم. و با مزایا و معایب معماری mvvm آشنا شدیم. و در حال حاضر بهترین معماری MVVM است. امیدواریم این مقاله برایتان مفید واقع شده باشد. همچنین باید متذکر شوم. اموزش معماری mvvm در اندروید گسترده تر از آنست که در یک مقاله بگنجد. بنابراین دوره های زیر را حتما تهیه کرده و از آنها استفاده کنید. اگر هر سوالی برای استفاده از این معماری دارید حتما در بخش نظرات برای ما ارسال نمایید.?آموزش پیاده سازی ذخیره Rest Api Data در دیتابیس محلی?آموزش پیاده سازی معماری MVVM با Retrofit2