تفاوت مهم اینها در قسمت ViewModel و Presenter هست که در MVVM قسمت ViewModel آن پیاده سازی کنندهی الگوی observer است و تغییرات اطلاعات در مدل یا حتی خواص قرار گرفتهی در آن، بلافاصله به View منعکس میشوند و برعکس آن هم با two-way binding میسر است.
در MVP، قسمت Presenter از وجود View مطلع هست. برای نمونه در مثال بحث فوق، شیء this را دریافت میکند و به این ترتیب هست که قابلیت به روز رسانی آنرا خواهد یافت. اما در MVVM قسمت ViewModel، هیچ ارجاعی را از View درخود ندارد.
بر این مبنا MVVM برای برنامههای statefull مانند برنامههای دسکتاپ و یا حتی برنامههای تک صفحهای وب سمت کاربر (استفاده از knockout js) مرسوم است.
MVP برای برنامههای stateless مانند برنامههای سمت سرور وب بیشتر کاربرد دارد. جایی که یک فریم ورک binding حاصل از زنده نگه داشتن context برنامه در دسترس نیست و طول عمر هر صفحه محدود است به پایان Response آن.
در MVP، قسمت Presenter از وجود View مطلع هست. برای نمونه در مثال بحث فوق، شیء this را دریافت میکند و به این ترتیب هست که قابلیت به روز رسانی آنرا خواهد یافت. اما در MVVM قسمت ViewModel، هیچ ارجاعی را از View درخود ندارد.
بر این مبنا MVVM برای برنامههای statefull مانند برنامههای دسکتاپ و یا حتی برنامههای تک صفحهای وب سمت کاربر (استفاده از knockout js) مرسوم است.
MVP برای برنامههای stateless مانند برنامههای سمت سرور وب بیشتر کاربرد دارد. جایی که یک فریم ورک binding حاصل از زنده نگه داشتن context برنامه در دسترس نیست و طول عمر هر صفحه محدود است به پایان Response آن.