تبلیغات

الگوی معماری MVP چیست و به چه صورت کار میکند؟!

تعریف MVP

Model-View-Presenter (مدل، ویو، ارائه دهنده) و یا به اختصار MVP، الگوی معماری برگرفته شده از الگوی دیگری با نام MVC یا Model-View-Controller می‌باشد؛ که اغلب برای ساخت رابط کاربری (UI) مورد استفاده قرار می‌گیرد. در الگوی MVP، عملکردِ Presenter (ارائه کننده)، به عنوان یک واسطه (میانجی یا چیزی مثل دلال) بین مدل و ویو در نظر گرفته می‌شود. و در این الگو، تمامی منطق‌های ارائه‌دهنده، به سمت Presenter هل داده می‌شود. (به عبارتی Presenter شامل منطق یا Logic است).

تاریخچه

الگوی معماری MVP، در اواخر دهه‌ی 1990 میلادی و در کمپانی Taligent (که یک سرمایه‌گذاری مشترک از اپل، IBM و Hewlett-Packard می‌باشد) آغاز شد. MVP، مدل برنامه‌نویسی پایه برای توسعه نرم‌افزار در محیط رایج مبتنی بر C ++ Taligent است. این الگو، بعدا به جاوا مهاجرت کرد و در مقاله‌ای توسط مایکل پوتل، محوبیت عمومی به دست آورد.

بعد از متوقف شدن Taligent در 1998 میلادی، Andy Bower و Blair McGlashan، در پروژه‌ی Dolphin Smalltalk پلتفرمِ ویندوزِ مایکروسافت، الگوی MVP را انطباق دادند تا پایه‌ای برای چارچوب رابط کاربری خود در Smalltalk ایجاد کنند. و در 2006، مایکروسافت MVP را با با مستندات و مثال‌های خود برای برنامه‌نویسی رابط کاربری در فرریمورک دات‍نت ترکیب کرد.

و اما MVP

همانطور که گفته شد، MVP یک الگوی معماریِ رابط کاربری است که برای تسهیل unit testing خودکار و بهبود نگرانی‌های موجود در منطق ارائه‌دهنده طراحی شده است. بخش‌های مختلف آن به شرح زیر می‌باشند:

  • Model: کلاسی که شامل داده‌هایی باشد؛ و این داده‌ها قرار است که در UI نمایش داده شوند.
  • View: کلاسی که منفعل و تاثیرپذیر بوده و داده‌ها (مدل) را نمایش می‌دهد؛ و دستورات کاربر (رویدادها: مثل کلیک شدن روی دکمه‌) را به سمت ارائه‌دهنده (presenter) هدایت می‌کند.
  • Presenter: ارائه دهنده، بر روی مدل و ویو عمل می‌کند. یعنی داده‌ها را از مخازن (ریپوزیتوری یا همان مدل) دریافت کرده و آن را برای نمایش در ویو قالب‌بندی می‌کند. (به عبارتی میانجی بین مدل و ویو است)

همانطور که در تصویر می‌بینید، View با Presenter در ارتباط بوده و Presenter نیز با Model! به بیان دیگر، Model با Presenter در ارتباط بوده و Presenter نیز با View! اما این ارتباط به چه صورت است؟!

  • View عملیاتی که کاربر روی آن انجام می‌دهد (از قبیل کلیک شدن روی یک دکمه) را به Presenter اطلاع‌رسانی می‌کند! و Presenter از آن جهت که توانایی تغییر Model را دارد، اگر عملیات صورت گرفته در UI (رابط کاربری)، به منطق Presenter بگویند که مدل را تغییر بده، پس این اتفاق رخ می‌دهد.
  • Model تغییرات خود را به Presenter اطلاع می‌دهد؛ و از آن جهت که Presenter می‌تواند View را تغییر دهد، پس آن را متناسب با Model به روز رسانی می‌کند.

از این دو گفته، واسطه بودن Presenter در نقش میانجی و مترجمِ بین View و Model به خوبی درک می‌شود تا View و Model را از یکدیگر جدا کند. بنابراین ویو و مدل با یکدیگر ارتباط مستقیمی ندارند.

تفاوت‌های میان MVP و MVC

در Model View Controller

  • کنترل‌کننده‌ها، مبتنی بر رفتار هستند و می‌توانند View های مختلفی را به اشتراک بگذارند.
  • View می‌تواند به طور مستقیم با مدل (Model) ارتباط داشته باشد.

در Model View Presenter

  • View از مدل جدا شده است؛ و در واقع، Presenter، میانجی بین مدل و ویو است.
  • امکان انجام راحت‌تر unit tests
  • گوش دادن (Listening) به عملکرد کاربر (User Actions) و به روز رسانی مدل
  • به روز رسانی مدل و ویو

در تصویر زیر، تفاوت این دو به خوبی درک می‌شود:

تبلیغات
0
کانال تلگرام فول کده
تبلیغات

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

هادی اکبرزاده

[ مدیر فول کده ]

علاقه‌مند به اشتراک گذاری اطلاعات در هر زمینه‌ای / برنامه‌نویس و دانشجوی ارشد رشته شبیه‌ساز هوشمند - در حال نوشتن یه رمان (اگه خدا بخواد و تموم شه ?)

پاسخ دهید

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

نظرات ثبت شده بدون دیدگاه