MVVM(Model view ViewModel)

در الگوی معماری نرم افزار شناخته شده در صنعت که بر تمام اشکالات الگوهای طراحی MVP و MVCغلبه می کند. MVVM پیشنهاد می کند که منطق ارائه داده ها (Views یا UI) را از بخش منطق تجاری اصلی برنامه جدا کنیم.

لایه های کد جداگانه MVVMعبارتند از:

لایه Model: این لایه وظیفه انتزاع منابع داده را بر عهده دارد. Model و ViewModel برای دریافت و ذخیره داده ها با هم کار می کنند.

لایه View: هدف این لایه اطلاع رسانی به ViewModel در مورد عملکرد کاربر است. این لایه ViewModel را مشاهده می کند و هیچ نوع منطق برنامه ای را شامل نمی شود.

لایه ViewModel: جریان‌های داده‌ای را که مربوط به Viewهستند را نشان می‌دهد. علاوه بر این، به عنوان یک پیوند بین Model و View عمل می کند.

الگوی MVVMشباهت هایی با الگوی طراحی MVP (Model — View — Presenter)دارد زیرا نقش Presenter توسط ViewModel ایفا می شود. با این حال، اشکالات الگوی MVP توسط MVVM به روش های زیر حل شده است:

الگوی View in MVVM

لایه View رابط مشتری، رابط ورودی-خروجی یا رابط کاربری است. تمام عناصر رابط کاربری پنجره، صفحه ناوبری، کنترل کاربر، فایل منبع، سبک و تم ها، ابزارها و کنترل های سفارشی را جمع آوری می کند. View از ViewModel و Model بی‌اطلاع است، و بالعکس ViewModel و Model از View بی‌اطلاع هستند و کنترل به شدت جدا شده است.

لایه ViewModel in MVVM

لایه ViewModel مستقیماً از view بی اطلاع است. ارتباط بین View و ViewModel از طریق برخی ویژگی ها و binding است. مدل‌ها مستقیماً به ViewModel متصل می‌شوند و متدی را توسط کلاس مدل فراخوانی می‌کنند، می‌داند مدل چه ویژگی‌هایی دارد، مانند ویژگی‌ها، متدها و غیره و همچنین از آنچه view نیاز دارد آگاه است.

لایه Model in MVVM

مدل داده‌های شما مانند کارمند، محصول یا مشتری را نشان می‌دهد. به طور کلی مجموعه ای از ویژگی ها و روش ها را تعریف می کند. ممکن است یک مدل از ابتدا ایجاد می کند یا آن را از یک ORM مانند Entity Framework یا از برخی از پروکسی های سرور دریافت میکند.

مراجع:

https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel

https://www.geeksforgeeks.org/introduction-to-model-view-view-model-mvvm/