آموزش معماری MVVM در اندروید
معماری MVVM
MVVM مخفف Model، View، ViewModel میباشد و یک الگوی معماری برنامه است که توسط جان گاسمن به عنوان جایگزینی برای MVC و MVP که در قدیم استفاده داشت، پیشنهاد شد. اصلی ترین ویژگی معماری MVVM جداسازی رابط کاربری از business logic و مدل داده (data model) میباشد.
همانطور که در نمودار بالا مشاهده میشود، بخشهای مختلف در این معماری کاملا از هم مجزا هستند و ارتباط بین این اجزاء را میتوانیم با استفاده از LiveData برقرار کنیم.
مدل (Model)
لایهی مدل شامل دسترسی به دادهها (Repository (مخازن) ، DAOها ، API ها)، کلاسهای Entity و … میباشد. مدل دادههای استفاده شده در برنامه را فراهم میکند و برای به روزرسانی این دادهها استفاده میشود، که همانطور که گفتیم این دادهها میتواند منابع مختلفی داشته باشد برای مثال از API آمده باشد یا از یک دیتابیس SQLite و یا هرجای دیگری…
مدل از View یا ViewModel چیزی نمیداند و به طور مستقل وجود دارد.
ویو (View)
View همان چیزی است که کاربر میبیند که برای مثال میتواند شامل Activity و Fragment و هرچیزی که قرار است به کاربر نمایش دهیم باشد. در معماری MVVM ما این قسمت را بطور کامل از business logic پروژه جداسازی میکنیم و این جداسازی بسیار به Clean Code کمک میکند و نگهداری و توسعه و تست نویسی را برای نرمافزار به همراه دارد.
ویو مدل (ViewModel)
شامل دادههای مورد نیاز برای View است. همانطور که از نام آن مشخص شده است، ViewModel پل ارتباطی بین View و Model است. دادههای خود را از لایه مدل بیرون میکشد و آن را برای نمایش آماده میکند.ViewModel ها نوعی POJO هستند، به این معنی که به راحتی قابل آزمایش هستند که یکی از اصلیترین مزایای آنها میباشد.
مزایای MVVM
Viewmodels امکان آزمایش آسانتر Display Logic را فراهم میآورد:
Viewmodels اجازه میدهد تا منطق صفحه نمایش بدون اینکه لحظه به لحظه مشاهده شود آزمایش شود. در توسعهی Android،این اجازه را میدهد تا تستهای بیشتری در JUnit نوشته شود و به صورت محلی (local) اجرا شود، نه در Android JVM (شبیه ساز یا دستگاه)، به این معنی که تستها خیلی سریعتر اجرا میشوند.
تفکیک روابط:
کدهای درهم و شکننده باعث کابوس نگهداری برنامه میشود. اگرما بدون داشتن هیچگونه معماری، توسعه دادن یک اپلیکیشن را شروع کنیم باعث بروز بیشتر انواع ارور یا خطا در برنامه میشویم و وقتی که بخواهیم یک features جدید به برنامه اضافه کنیم سردرگم میشویم و سرعت توسعه یافتن برنامه خیلی کم میشود و باعث میشود که مشتری از روند توسعهی برنامه ناراضی باشد. يكی از مهم ترين مزایای اين امر كه ما اغلب در برنامههای اندرویدی میبينیم، Activityها وFragmentهای يكپارچه است که شامل business logic، تعامل مستقيم با پايگاه داده و یا API است، كه با كليهی كدهای View همراه است. MVVM کمک زیادی میکند تا معماری تمیز، منسجم و کاملاً جفت شده، حفظ شود و Activityها و Fragmentها را صرفاً به عنوان بخشی از View نگه میدارد.
استفادهی مجدد از کد را بهبود میبخشد:
Viewmodels را میتوان دوباره در سراسر برنامه استفاده کرد، به این معنی که display logic نیازی به کپی ندارد. این View حتی میتواند برای جایی دیگر جابهجا شود و هنوز از همان ViewModel استفاده میکند و تا زمانی که به همان دادهها و عملیات بستگی داشته باشد، از همان ViewModel استفاده میکند.
رابط کاربری میتواند بدون دست زدن به Business Logic بروز شود:
این به این معنی است که توسط سازندگان مختلف و درگیریهای کمتری میتوان روی مؤلفهها (Components) کار کرد، و این امکان را فراهم میکند تا تعداد اعضای تیم راحتتر افزایش یابد. به عنوان مثال، یک توسعه دهنده front-end قادر است بدون نیاز به منطق در ViewModel، به طور مستقل روی View کار کند، در حالی که توسعه دهنده ای دیگر بر روی بخشی دیگر کار میکند و یک نسخهی fake از یک ViewModel میتواند مورد استفاده قرار گیرد در حالی که نسخهی اصلی در حال توسعه است.
در این دوره قصد دارم بصورت کامل معماری MVVM رو با تمام اجزاء و روابط آن آموزش بدم طوری که کاملا به اون مسلط بشید و در انتهای کار یک سورس قوی از معماری MVVM داشته باشید و یک پروژه با MVVM که میتونه توی رزومه شما قرار بگیره و توی استخدام در شرکتهای مختلف بسیار بهتون کمک کنه.
اگه میخوای خیلی حرفه ای معماری MVVM رو یاد بگیری دوره ژنرال اندوید ما رو از دست نده…
برای مطالعه بیشتر درباره کاتلین اینجا کلیک کن.
درباره محمد زارع
از سال 94 بصورت جدی وارد عرصه برنامه نویسی اندروید شدم، در شرکتها و استارتآپهای زیادی مشغول به کار بوده و تجربه کسب کرده ام و در این سایت قصد دارم این تجربه را به اشتراک بگذارم
نوشته های بیشتر از محمد زارع
دیدگاهتان را بنویسید