علیرضا حیدری | Alireza Heydari
علیرضا حیدری | Alireza Heydari
خواندن ۲ دقیقه·۳ سال پیش

تفسیری بر   MVVM

 در مطلب زیر به شرح معماری    MVVM و تمایز آن با مدل‌های دیگر می‌پردازیم.

بگذارید دید خودمان از برنامه‌ها و application ها بیان کنیم. هر برنامه یک لایه را دارا است که اطلاعات و داده‌ها را در خود ذخیره می‌کند. بگذارید نام این لایه را model  بگذاریم. در این لایه تنها داده‌های خام نگهداری می‌شود.

همچنین لایه دیگری از نرم‌افزار هست که داده‌ها به کاربران نمایش داده می‌شود. مانند فرم‌ها، متن‌ها و ... . تمامی این قسمت را نیز در لایه‌ای با اسم  view فرض می‌کنیم.

پس تاکنون دو لایه view و model را دارا هستیم و در اپلیکیشنی با کمترین نیاز می‌توان داده‌های model را در view  نمایش دهیم.

اما اپلیکیشن‌ها معمولا پیچیده‌تر از این سادگی قرار دارند و لازم دارند تا منطق یا logic ای را داشته باشند. برای مثال فرض کنید میخواهیم بگوییم هر وقت داده‌ای با نام  age از ۲۵ بیشتر بود باید قسمتی از view به صورت زرد نمایش داده شود. یا اگر داده‌ای با نام is_activated مقدار  false  داشت اطلاعات به خصوصی را نمایش دهیم. با توجه به این نیاز‌ها لازم می‌شود تا به صورتی این منطق را پیاده‌سازی کنیم.

پترن  MVVM  جهت حل همین مسئله معرفی شده است.

براساس این مدل یک لایه جدیدتر با نام   ViewModel  معرفی می‌شود که منطق برنامه در آن قرار می‌گیرد. به تصویر زیر دقت کنید.

مدل MVVM
مدل MVVM

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

ارتباطی که بین Model  و ViewModel  هست نشان دهنده Manipulating Data است با این مفهوم که داده‌ها را تغییر دهیم تا خواندن و تفسیر آن‌ها راحت‌تر شود. این هماند ارتباطی است که با کمک آن می‌گوییم اگر داده‌ها شرایط خاصی را داشتند به چه صورتی در بیایند.

همچنین ارتباط بین View و ViewModel نیز با نام Two-Way Data Binding شناخته می‌شود. در این ارتباط هم منطق‌های بیان شده در قسمت  ViewModel در قسمت View به کاربران نمایش داده می‌شود و هم کاربران می‌توانند منطق را با کمک تغییر در قسمت View  عوض کنند تا در ViewModel اثر بگذارد و اطلاعات نمایش داده شده متفاوت باشد. به همین دلیل است که two way در اسم این رابطه قرار داده شده است.


این مطلب، بخشی از تمرینهای درس معماری نرم‌افزار در دانشگاه شهیدبهشتی است.


معماری_نرم_افزار_بهشتی
فارغ‌التحصیل دانشگاه امیرکبیر |‌ برنامه‌نویس فرانت کافه‌بازار/بلد
شاید از این پست‌ها خوشتان بیاید