این مقاله برای مطالعه معماری های اندرویدی (Architecture of Android) است و از این لحاظ حائز اهمیت است که برای دستیابی به کد زنی بی نقص باید آن را فراگرفت.

در این مقاله به بررسی تفاوت میان ام وی سی (MVC) , ام وی پی (MVP) و ام وی وی ام (MVVM) می پردازیم. که از معماری های معروف اندرویدی هستند.

فهرست مطالب

معماری چیست؟

معماری چیست؟ اگر شما در حال ساختن یک برنامه با شیوه ی کد زنی مرتب و مجموعه ای از قوانین با ویژگی های کارآمد و پیاده شده توسط پروتکل های مناسب هستید، آنگاه شما از معماری استفاده می کنید.

 

قوانین معماری

تصور کنید در کد نویسی از هیچگونه معماری و نظمی استفاده نمی کنیم و کدمان را در قالب کلاس/اکتیویتی/فرگمنت با شیوه ای بدون سازمان دهی می نویسیم, آنگاه مشکلاتی همچون مشکلات زیر گریبان گیرمان خواهد شد:

  • تعداد خطوط کد بالا می رود و فهم آن سخت می شود.
  • از میزان خوانایی متن می کاهد و به تعداد ایرادات (Bug) برنامه می افزاید؛بنابراین آزمایش برنامه سخت می شود و از میزان کیفیت آن می کاهد.

بنابراین برای ارائه داده های قابل فهم، بهتر است از معماری مناسب بهره ببریم؛که از اثرات آن می توان به :

افزایش نیرومندی / مقیاس پذیری / مقاومت در برابر ایرادات / خوانایی / کارایی / آسودگی تغییر پذیری / آسودگی ارائه تیمی اشاره کرد و در نهایت برنامه ایی با کیفیت مطلوب ارائه می شود.

 

 

 هم رویش منتشر کرده است :

 

چند اصل برای معماریی مناسب در اندروید

برای دستیابی به معماریی مناسب چند قاعده هست که بهتر است از آنها پیروی کنیم:

  • جدایی دغدغه ها : ریز کردن وظایف به بخش های مختلف؛در نمودار مشاهده می کنید:تصویر نمودار ریز کردن وظایف به بخش های مختلف

با استفاده از یک الگوی معماریی این امر ممکن می شود.

  • حذف وابستگی های سنگین(dependency) : این مسئله که هر بخش باید مقداری از وابستگی را دوباره تعریف کند ، باید حل شود. تمام وابستگی مورد نیاز باید از خارج تامین شوند.
    در لینک های زیر می توانید روش Dagger injection را ببینید: در لینک های زیر می توانید از تزریقات نیازها استفاده کنید:

?Dependency Injection and Dagger2 basic concepts

?Dagger2 Advance concepts

  • چرخه حیات و ذخیره داده ها را مدیریت کنید : این امر از طریق ریز کامپوننت های خاص معماری امکان پذیر است.
    (در مقاله بعدی در مورد کامپوننت های خاص معماری مطالعه میکنیم.)

 

الگوی معماری :

الگوی طراحی معماری نرم افزار، برنامه نویسی سازمان یافته و منظم را ترویج می دهد.
بخش های متفاوت عملکردی برنامه ، باید جدا باشند زیرا در کنار راحتی آزمایش ، هزینه نگهداری نیز کم می شود.
ام وی سی (MVC) ، ام وی پی (MVP) و ام وی وی ام (MVVM) چند نمونه ی مشهور الگوهای معماری هستند.
در ادامه آنها را یک به یک بررسی می کنیم:

– MVC :

ام وی سی، معمول ترین معماری استفاده شده است که از سه بخش زیر تشکیل می شود:

بخش Model– منطق کار برنامه و وضعیت داده است. دریافت وایجاد تغییرات در داده ها،ارتباط با کنترلر،تعامل با پایگاه داده و گاها برزورسانی اجزای رابط کاربری .

بخش view – چیزی که ما میبینیم. رابط کاربری تشکیل شده از اچ تی ام ال (HTML) / سی اس اس (CSS)/ (XML) است.
مدام در ارتباط با کنترلر و برخی اوقات با مدل تعامل میکند.مدل برخی رابط های کاربری های پویا را از طریق کنترلر گذر می دهد.

بخش Controler – یک اکتیویتی(Activity) / فرگمنت (Fragment) است. در تعامل با اجزای رابط کاربری و مدل است.کنترلر ورودی کاربر را از سرویس REST یا رابط کاربری میگیرد.فرایند درخواست داده را از مدل میگیرد و به رابط کاربری می دهد.

در نمودار مشاهده می کنید:

تصویر نمودار کارکرد معماری MVC

**پیشنهاد مطالعه:

فریمورک MVC چیست؟ — معماری MVC

 

مزایا :

  • در مدل،منطق کار برنامه جدا نگهداشته می شود.
  • از تکنیک های نا متقارن پشتیبانی میکند.
  • فرایند تغییرات باعث تغییر کل مدل نمی شود.
  • سرعت فرایند پیشرفت بیشتر می شود.

 

معایب :

  • به دلیل تعداد کد بالا ، کنترلر قابل مدیریت نیست.
  • مانع از تست برنامه می شود.
  • پیچیدگی را افزایش می دهد.

 

در برنامه های همچون RubyOn Rails, Codeigniter, Angular Django و … از این معماری استفاده شده که نمونه های کد آن را می توانید در لینک زیر ببینید:

نمونه کد ام وی سی (MVC)

 

– MVP :

برای راحتی توسعه دهندگان یا تسریع فرایند توسعه ، ضروری است که معماری به چند لایه تقسیم شود.
به همین دلیل کتابخانه، به بخش هایی که در رابط کاربری میبینیم تقسیم می شود.

بخش Model –منطق کار برنامه و وضعیت داده است. دریافت وایجاد تغییرات در داده ها،ارتباط با ارائه دهنده ،تعامل با پایگاه داده از ویژگی ها آن است. اما با اجزای رابط کاربری تعامل ندارد.

بخش View – متشکل از ارتباط با کاربر(User Interface) / اکتیویتی / فرگمنت است.و با ارائه دهنده تعامل میکند.

بخش Presenter -وظیفه اش ارائه داده از سمت مدل است.تمامی رفتار هایی که باید از طرف برنامه نمایش داده شود کنترل می کند.اجزای رابط کاربری را کنترل می کند.هر اتفاقی که بین رابط کاربری و مدل می افتد توسط ارائه دهنده کنترل می شود.در آخر داده را داخل مدل ذخیره می کند.

همانگونه که در نمودار میبینید:

تصویر نمودار کارکرد معماری MVP

مزایا:

  • ظاهر رابط کاربری را ساده می کند بنابراین شما می توانید به راحتی محیط کاربری را کنترل کنید.
  • ارائه دهنده و رابط کاربری قابل استفاده مجدد
  • کد خوانا تر و نگهداری آسان ترمی شود.
  • راحتی بیشتر در طی جداشدن منطق کار برنامه از یو ای (UI)

 

معایب:

  • وابستگی شدید رابط کاربری (View) و ارائه گر (Presenter)
  • مقدار بسیار زیاد رابط های برای تعامل بین لایه ها
  • بیش از اندازه بودن سایز کد ها

نمونه کد های این معماری را می توانید در لینک زیر ببینید:

نمونه کد ام وی پی (MVP)

 

– MVVM :

وابستگی شدید بین هر بخش را از بین می برد و کلاس های چسبنده را کاهش می دهد.بر مبنای کانسپت ابزروبل ها (observables) کار می کند.
مرجع زیرکلاس ها ، کلاس های بالاترشان نیست و مرجعیتشان از ابزروبل ها می آید.

بخش Model – دارای منطق کار برنامه ، منبع داده های محلی و غیر محلی است.
مخزن(Repository):بنا به درخواست ویو مدل(ViewModel) با منبع داده های محلی و غیر محلی در ارتباط است.

بخش View – فقط برای تعامل با کاربر(شامل XML ) است، هرگز منطق پردازش در این بخش به کار گرفته نمی شود.ارسال مستقیم درخواست کاربر به ویو مدل و عدم امکان گرفتن مستقیم پاسخ.برای دریافت پاسخ، رابط کاربری برخی اطلاعات منتشر شده از طرف ویو مدل را دریافت می کند.

بخش ViewModel – بیشترین منطق رابط کاربری در اینجا تجمع پیدا کرده است.مانند یک پل بین اجزای رابط کاربری و منطق کار برنامه است.اما نمی داند کدام رابط کاربری قرار است از آن استفاده کند،چون یک مرجع مستقیم بین خودش و اجزای رابط کاربری ندارد.
بنابراین از ویژگی هایش عملکرد بالا در آزمایش و وابستگی کم است.اما همچنان نیاز دارد که رابط کاربری را با توسط ابزروبل ها آپدیت کند. به این صورت که هنگامی که داده تغییر میکند ، ابزروبل ها متوجه می شوند.

همانگونه که در نمودار میبینید:

تصویر نمودار کارکرد معماری MVVM

 

**پیش از این آموزش MVVM در اندروید منتشر شد. برای دیدن فیلم معرفی به همراه دریافت این بسته آموزشی بر روی لینک زیر کلیک کنید:

برنامه نویسی اندروید با کاتلین ___ فصل 5- آموزش MVVM در اندروید

 

مزایا:

  • ظاهر رابط کاربری را ساده می کند بنابراین شما می توانید به راحتی اجزای رابط کاربری را کنترل کنید.
  • ارائه دهنده و اجزای رابط کاربری با قابلیت استفاده مجدد
  • کد خوانا تر و نگهداری آسان تر
  • راحتی بیشتر در طی جداشدن منطق کار برنامه از رابط کاربری

 

معایب :

  • وابستگی شدید اجزای رابط کاربری و ارائه دهنده
  • مقدار بسیار زیاد رابط های برای تعامل بین لایه ها
  • بیش از اندازه بودن سایز کد ها

نمونه کد های این معماری را می توانید در لینک زیر ببینید:

نمونه کد ام وی وی ام (MVVM)

 

 

هم رویش منتشر کرده است:

آموزش برنامه نویسی اندروید با کاتلین (فصل 5- معماری MVVM )

 

 

امیدوارم که به خوبی مفهوم معماری های اندرویدی را برایتان به نمایش گذاشته باشم.
موفق باشید.

 

منابع :

MVC vs MVP vs MVVM architecture in Android

 

کلیدواژگان

معماری های اندرویدی | Architecture of Android | معماری MVVM | معماری MVC | معماری MVP | معماری چیست

 

دوره های آموزشی مرتبط

نویسنده :

سئو و ویراستاری :

زیبا عامریان هستم فارغ‌التحصیل مهندسی کامپیوتر و متخصص سئو و بازاریابی محتوا. در تیم اجرایی هم‌رویش مدیریت واحد محتوا رو به عهده دارم و امیدوارم که تونسته باشم تاثیر خوبی روی سئو و کیفیت خوانش محتوای هم‌رویش بگذارم.

زیبا عامریان هستم فارغ‌التحصیل مهندسی کامپیوتر و متخصص سئو و بازاریابی محتوا. در تیم اجرایی هم‌رویش مدیریت واحد محتوا رو به عهده دارم و امیدوارم که تونسته باشم تاثیر خوبی روی سئو و کیفیت خوانش محتوای هم‌رویش بگذارم.

2 دیدگاه برای “مقایسه معماری های MVC و MVP و MVVM در اندروید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Search

مطالب مرتبط

دسته بندی مطالب

دوره-رایگان-یادگیری-ماشین-کتاب-یادگیری-ماشین-ژرون-Aurelien-Geron-هم-رویش
یادگیری ماشین رایگان ــ تندخوانی کتاب جرون