brain storming
brain storming
خواندن ۴ دقیقه·۳ سال پیش

الگوی یا معماری 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 و SnackBar
  • Working with Android View and Widget
  • Start Activities
  • و تمام کارهای مرتبط با Context

طبقه یا لایه مدل Model

هر چیزی که به داده مربوط میشه تو این طبقه ست چون برای بروز رسانی اطلاعاتی که کاربر میبینه باید طبقه مدل تغییر کرده باشه.

اطلاعاتی یا دیتای که می‌تونیم از طبقه مدل بگیریم، به عنوان مثال:

  • RestFull API
  • SQLite db
  • Handles broadcast
  • Shared Preferences
  • Firebase

طبقه Model از طبقه View یا طبقه ViewModel اطلاعی ندارد و به طور مستقل کار میکند. اگر یک برنامه‌ی  که قبلاً بر اساس الگوی MVC یا MVP ساخته شده است، به MVVM منتقل کنید ، لایه‌ی Model به احتمال زیاد نیازی به تغییر نخواهد داشت چون وابسته به لایه های دیگر نبوده و براحتی قابل انتقال می باشد. برای آموزش viewmodel در اندروید به صورت کامل و پروژه محور، میتونی آموزش معماری mvvm در اندروید تهیه کنی.

وظایف لایه view model:

  • دادن دیتا به لایه ویو برای نمایش اطلاعات
  • منتشر کردن وضعیت دیتاها مانند  ProgressBar  , نمایش خطاها و  …
  • مدیریت نمایش/مخفی نمودن کنترل ها
  • مدیریت Validation کنترل ها
  • اجرای متدهای Model
  • نمایش اطلاعات خروحی Model در View

ViewModel ها فقط باید درباره‌ی Context  اطلاعات داشته باشد. Context  می‌تواند شامل موارد زیر باشند :

  • اجرای اکتیویتی جدید start Activity
  • ‌Bind کردن سرویس ها
  • ارسال سرویس های Broadcast
  • Register  کردن سرویس های Broadcast
  • استفاده از منابع Resource

کارهایی که نباید در ViewModel انجام داد شامل موارد زیر است :

  • نمایش دیالوگ ها Dialog
  • Start کردن اکتیویتی ها
  • inflate کردن لایوت ها برای View ها

دو مدل پیاده سازی معماری MVVM در اندروید :

  • DataBinding
  • RxJava

دیتا بایندینگ 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



mvvmandroid tutorialمعماری mvvm چیست؟
یک توسعه دهنده موبایل https://fixcel.ir/
شاید از این پست‌ها خوشتان بیاید