معماری برنامه اندروید براساس MVP

  • شروع کننده موضوع meli770
  • بازدیدها 189
  • پاسخ ها 0
  • تاریخ شروع

meli770

کاربر نگاه دانلود
کاربر نگاه دانلود
عضویت
2015/12/31
ارسالی ها
1,588
امتیاز واکنش
20,057
امتیاز
706
سن
26
محل سکونت
قم
اساسی ترین کار در علم کامپیوتر انتخاب مناسب الگوی معماری (Architecture Pattern) پروژه است. تنها راهی است که میتوان پروژه را براساس آن تمیز (clean)، گسترش پذیر (expansible) و قابل تست (testable) نگهداری کرد. الگوها روش های شناخته شده ای هستند که در طول سال های برنامه نویسی بوجود آمده اند، تست شده اند، بهینه شده اند و امروزه بعنوان استاندارد شناخته میشوند. آنها بطور مدارم درحال متحول شدن هستند. بعنوان نمونه در اندروید الگوی معتبر (Model-View-Controller (MVC به الگوی (Model-View-Presenter (MVP تغییر کرده است. در بخش اول مقاله به تفاوت ها و ویژگیهای هرکدام از این الگوها میپردازیم.


Android SDK
وقتی به جزییات Android SDK و بطور خاص به layout – activity – data دقیق شویم، متوجه میشویم که بهترین الگو برای استفاده در معماری برنامه اندروید مدل (Model View Controller (MVC است. اما زمانیکه پروژه سنگین و بزرگ میشود، امکانات آن علی الخصوص در مورد تست برنامه جوابگوی مشکلات پیش رو نیست (برای اطلاعات بیشتر رجوع شود بهSeparation of concerns).

با اینحال، هنوز براساس معماری اندروید، امکان انتخاب الگوی دیگر وجود دارد که به آن بدون الگو! یا آنتی پترن (Anti-pattern) گفته میشود. با اینکه MVC الگویی قابل اعتماد و شناخته شده است، اما زمین بازی را به الگوی جدیدتر MVP باخته است چراکه این الگو ویژگیهای خاصی را به همراه آورده است که بخوبی تحت Separation of concerns تعریف میشود.

در معماری برنامه از MVC استفاده کنیم یا MVP؟
جواب دقیقی به این سوال نمیشود داد. گروهی از برنامه نویسان همچنان به MVC اعتقاد دارند، گروهی شیفته MVP هستند و گروهی – مانند اینجانب – به الگوی MVVM علاقه مند هستند. هرکدام از این الگوها ویژگیها و معایب مخصوص به خود را دارند. که بدین ترتیب برای جواب دادن به سوال فوق باید جزییات همه این الگوها را دانست تا با چشم باز و براساس نیاز پروژه بهترین الگو انتخاب شود. براساس تعریف وایکی پدیا:

Model–view–controller (MVC) is a software architectural pattern mostly (but not exclusively) for implementing user interfaces on computers. It divides a given software application into three interconnected parts, so as to separate internal representations of information from the ways that information is presented to or accepted from the user.

Model–view–presenter (MVP) is a derivation of the Model–View–Controller (MVC) architectural pattern, and is used mostly for building user interfaces. In MVP the presenter assumes the functionality of the “middle-man”. In MVP, all presentation logic is pushed to the presenter.

تفاوت های بین MVC و MVP
ویژگیهای الگوی MVP:

  • ارتباط بین View با Model قطع شده است.
  • ساخت Unit Test راحت شده است.
  • عموما رابـ ـطه یک به یک بین Presenter و View وجود دارد که این ارتباط به یک یه چند برای پروژه های سنگین و بزرگتر هم قابل گسترش است. بدین ترتیب برای Viewهای بزرگ میتوان چندین Presenter معرفی کرد.
ویژگیهای الگوی MVC:

  • Controllerها رفتارگرا (behavior based) هستند و میتوانند شامل چندید View باشند.
  • View مستقیما با Model در ارتباط است.
pnuofe7doetd9pcujkg6.png
Model View Presenter در اندروید
جداسازی المانها در اندروید بخوبی تعریف نشده است. بعنوان نمونه اکتیویتی ها رایطه بسیار نزدیکی با Model و View دارند. همانگونه که اشاره شد برای نگهداشتن پروژه در بهترین حالت – گسترش پذید، تمیز و قابل تست شده -، بسیار مهم است که جداسازی المانها در آن رعایت شده باشد و این چیزی است که الگوی MVP در اختیار ما قرار میده
xhyn9bdfmx8iweuf6li3.png
بهترین راه برای اجرای MVP
روشهای زیادی برای اجرای MVP وجود دارد که بدین ترتیب به طرق مختلف میتوان پروژه اندروید را بر آن منطبق کرد. این تنوع در اجرا بخاطر تفاوت در نقش هایی است که
Presenter بازی میکند. اما صرف نظر از این روشها، هسته اصلی MVP باید یکسان باشد.

  • Presenter: رابطی است میان View و Model. دیتا را از مدل دریافت میکند، آنرا ویرایش/آماده میکند و در اختیار View قرار میدهد. اما برخلاف MVC، تصمیم میگیرد که چه واکنشی به درخواست کاربر در ارتباط با View انجام دهد (مثلا زمانیکه دکمه ای کلیک شد).
  • View: عموما توسط اکتیوتی اجرا میشود و رفرنسی از Presenter را در خود دارد. تنها کاری که View انجام میدهد این است که متدخاصی را – از Presenter – زمانیکه اتفاقی در واسط کاربری افتاد (مثلا زمانیکه دکمه ای کلیک شد)، صدا کند.
  • Model: در برنامه ای که خیلی خوب لایه های معماری رعایت شده باشد، Model تنها چیزی است که منطق بیزینسی پروژه را اجرا میکند. اینطوری به آن نگاه کنید که دیتای مورد نیاز برای نماش داده شدن در View را دراختیارمان قرار میدهد.
تعاریف فوق از مطلب MVP for Android: how to organize the presentation layer برداشت و ترجمه شده است.




سایر منابع:

  • MVP for Android: how to organize the presentation layer
  • Ted Mosby - Software Architect
  • Differences between MVC and MVP for Beginners - CodeProject
  • Introduction to Model View Presenter on Android · konmik/konmik.github.io Wiki · GitHub
  • Model–view–presenter - Wikipedia, the free encyclopedia
 

برخی موضوعات مشابه

تاپیک قبلی
تاپیک بعدی
بالا