الگوی MVVM که مخفف Model-View-ViewModel است، الگویی است که منطق تجاری و ارائه برنامه از رابط کاربری را به طور مناسب تفکیک می کند. این تفکیک باعث رفع بسیاری از مشکلات توسعه می شود از جمله اینکه تست، نگهداری و تکامل برنامه ساده تر می گردد. MVVM همچنین به عنوان model-view-binder شناخته می شود و توسط معماران مایکروسافت Ken Cooper و John Gossman ساخته شده است. MVVM به سازماندهی کد و تبدیل برنامه ها به ماژول ها کمک می کند تا توسعه، به روز رسانی و استفاده مجدد از کد را ساده تر و سریع تر کند. این الگو اغلب در ویندوز و نرم افزارهای ارائه گرافیک وب استفاده می شود.
سه جزء اصلی در الگوی MVVM وجود دارد: مدل، view و view-model که هر کدام هدف مشخصی را دنبال می کنند. شکل زیر روابط بین سه جزء را نشان می دهد.
در ادامه به تشریح هر یک از این اجزاء می پردازیم.
Model:
مدل وظیفه ذخیره داده ها و منطق مربوطه را برعهده دارد. مدل داده هایی را که بین اجزای کنترل کننده یا هر منطق تجاری مرتبط دیگری منتقل می شود، نشان می دهد.
View :
منظور از View اجزاء مربوط به UI است مثل HTML و CSS. در این الگو View مسئولیت نمایش داده هایی را که از کنترلر دریافت می شود، دارد. وظیفه دیگر آن تبدیل Modelها به UI است.
ViewModel :
این جزء (ViewModel) در واقع مسئولیت پشتیبانی از وضعیت View را دارد که این کار را از طریق ارائه توابع، دستورات و متدها انجام می دهد. علاوه بر این مسئول اجرای مدل و فعال کردن رویدادها در View نیز می باشد.
مزایای MVVM
• تفکیک منطق کسب وکار از Ul
• نگهداری و تست آسان
• استفاده مجدد آسان از کامپوننت ها
• معماری Loosely coupled
• نوشتن موارد unit test برای هر دو لایه viewmodel و Model بدون نیاز به ارجاع به View
معایب MVVM
• نگهداری از تعداد زیادی کد در کنترلر
• برای رابط های کاربری ساده معماری MVVM می تواند بیش از حد باشد.
• عدم ارائه اتصال محکم بین view model وview