الگوی MVP (Model View Presenter) نسخهای از الگوی معروف MVC (Model View Controller) است. در حال حاضر، MVP مورد توجه بسیاری از توسعهدهندگان اپلیکیشنهای اندروید قرار گرفته است.
یکی از مشکلات اندروید آن است که Activity های آن به شدت با مکانیزمهای رابط و دسترسی به داده ارتباط دارند. برای آنکه یک اپلیکیشن به سادگی قابل گسترش و نگهداری باشد، باید لایههای جدا از همی تعریف کنید. فرض کنید در آینده بخواهید به جای بازیابی یک داده از یک پایگاه داده، همین داده را از یک خدمت وب بگیرید. در این صورت، اگر از MVP استفاده نکرده باشید، باید کل View را تغییر دهید. MVP منجر به استقلال Viewها از منبع داده میشود. MVP اپلیکیشن را حداقل به سه لایه مختلف تقسیم میکند تا بتوانید هر یک را جداگانه آزمایش کنید:
• Model: این لایه رابط مسئول مدیریت داده است. مسئولیتهای Model شامل استفاده از APIها، کَش کردن داده، مدیریت پایگاههای داده و ... میشوند.
• Presenter: این لایه واسط میان Model و View است. نمایش همه منطقها در این لایه اتفاق میافتد. Presenter مسئول کوئری Model و بهروزآوری View است تا بتواند به تعاملات کاربر واکنش نشان دهد و Model را بهروزآوری کند.
• View: این لایه تنها مسئول نمایش داده به روشی است که Presenter تصمیم گرفته است.
بدین ترتیب، میتوانید با استفاده از این الگوی معماری اندروید حدقال به مزایای زیر دست یابید:
• سادهتر شدن رفع اشکال در اپلیکیشنها: همانطور که گفته شد، MVP سه لایه مختلف از مجردسازی دارد که رفع اشکال اپلیکیشن شما را سادهتر میسازد. به علاوه، از آنجایی که منطق کسبوکار کاملاً از View جدا شده، انجام آزمایش واحد در حین توسعه اپلیکیشن نیز ساده میشود.
• جداسازی بهتر مسائل: MVP در جداسازی منطق کسبوکار و منطق عمومی کلاسهای Activity و Fragment کد اندروید عملکردی عالی دارد. بدین ترتیب، مسائل پروژه به خوبی از هم جدا میشوند.
• قابلیت استفاده مجدد از کد: در MVP، کد میتواند به خوبی استفاده مجدد شود، زیرا میتوانید برای کنترل Viewهای خود چند Presenter داشته باشید. این امر بدان دلیل مزیت محسوب میشود که برای کنترل Viewهای مختلف خود نیازی به اتکا به تنها یک Presenter ندارید.
در طی سالها، الگوهای معماری متعددی به وجود آمدهاند. اما تاکنون MVP به خوبی توانسته نیازهای توسعهدهندگان اندروید را رفع کند. به همین دلیل، MVP الگوی معماری است که جامعه اندروید استفاده از آن را ترجیح میدهد. بنابراین، اگر میخواهید وارد حوزه توسعه اپلیکیشنهای اندروید شوید و هنوز طراحی بر اساس MVP را یاد نگرفتهاید، بهتر است هرچه سریعتر از آموزشهای متعدد آنلاین موجود در اینترنت استفاده کنید تا بتوانید در بازار رقابتی کنونی مورد توجه شرکتهایی باشید که به دنبال استخدام توسعهدهنده اندروید هستند.