حسام رسولیان
برنامه نویس موبایل

دلایل استفاده از MvvM به جای MVP در اندروید چیست؟

انتخاب و استفاده از دیزاین پترن شاید خیلی وقت ها تبدیل به یک مشکل اساسی برای برنامه نویس یا تیم فنی بشه. تکنولوژی مورد استفاده , پلتفرم, اندازه پروژه و.. همه در انتخاب یک معماری مناسب دخیل هستند. امروز اما میخوام درباره اهمیت MVVM در برنامه نویسی اندروید صحبت کنم.

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
سرفصل های این مطلب
  1. چرا MVVM
  2. اتصال محکم
  3. تست
وب سایت توسینسو

میدونیم که اندروید بصورت پیشفرض از معماری MVC تا حدودی استفاده می کنه جایی که اکتیویتی مسئول اکثر عملیات های منطقی است. برای پروژه های کوچک این نوع معماری بدون هیچ مشکلی کار میکنه ولی اگر پروژه شما گسترش پیدا کنه باید به سراغ MVP یا MVVM برید.

چرا MVVM

معماری MVP تقریبا پر طرفدار ترین معماری در توسعه اندروید هست و بدون شک قدرت خیلی زیادی هم داره اما نکته مهمی که وجود داره این هست که "هیچ چیز بی نقص نیست" و طبیعتا MVP هم نواقص مخصوص به خودش و داره.اهمیت MVVM زمانی بیشتر میشه که متوجه بشیم گوگل هم معماری و کامپوننت های MVVM و برای اندروید پیشنهاد کرده و کتابخونه های مختلفی هم برای این کار توسعه داده.به تصاویر زیر درباره دو معماری توجه کنید.

وب سایت توسینسو
وب سایت توسینسو

آیا میتونید تفاوت نحوه کار و متوجه بشید؟ بذارید با مشکلی که MVP ایجاد میکنه شروع کنم.

اتصال محکم

برای هر اکتیویتی یا فرگمنت (View) ما نیاز به یک presenter در واقع این رابطه یک به یک بزرگترین مشکل ما هست. در این زمان اگر ما نیاز به یک تغییر کوچیک داشته باشیم مجبور میشیم که خیلی روابط خودمون و دست خوش تغییر دهیم و ما نیاز داریم که همه چیز به شکل توزیع شده ای طراحی بشه که MVVM این قابلیت و داره.ViewModels یک کلاس ساده هست که با Model یا قسمت منطقی در ارتباط هست و فقط اطلاعات و نگهداری میکنه و کاری با نحوه مصرف این اطلاعات نداره.فقط View با ViewModels در ارتباط هست و نه برعکس این مشکل روابط یک به یک و حل میکنه یعنی هر View میتونه به چندین ViewModels رفرنس داشته باشه.

تست

از اونجایی که Presenters به سختی محدود به View هست نوشتن تست های مختلف برای MVP کمی دشوار تر هست. اما به دلیل اینکه ViewModels وابستگی زیاد خاصی به View نداره نوشتن و انجام تست های گوناگون راحت تر انجام میشه.


حسام رسولیان
حسام رسولیان

برنامه نویس موبایل

کارشناسی فناوری اطلاعات برنامه نویس موبایل با زبان های جاوا, کاتلین, دارت(فلاتر) CCNA,LPIC

نظرات