توجه: ساختار پروژه تغییر کرده است.در یک پست جدید تغییرات توضیح داده می شود.البته اگر مایل هستید با استفاده از لینک آخر این پست میتوانید به پروژه ی قدیمی دسترسی داشته باشید.
مدت هاست که به صورت پراکنده در رابطه با معماری های نرم افزار در اندروید مطالعه می کنم. انعطاف اندروید به توسعه دهنده امکان می دهد که از معماری های مختلف مانند MVP ،MVVM ،Clean Arch و … در ساخت اپ استفاده کند. انتخاب یکی از این گزینه ها بسیار مشکل است، به همین دلیل تا زمانی که یکی از این معماری ها را برای اپ های خود انتخاب کنم، سعی کردم با استفاده از Package بندی مناسب پروژه و جداکردن کلاس ها از یکدیگر، قابلیت توسعه پذیری و نگهداری پروژه را بالا نگه دارم. به مرور و بر اساس تجربه ای که در ساخت اپ های جدیدتر پیدا کردم با بهبود ساختار پروژه ها، به یک اسکلت ثابت رسیدم اما بزرگترین کمبودی که همچنان در پروژه ها احساس می کردم، عدم امکان تست نرم افزار به دلیل در هم تنیدگی بخش UI (اکتیویتی و فرگمنت ها) با باقی بخش ها بود. به این ترتیب به مفید بودن مطالعه ی معماری ها پی بردم ولی تا زمانی که به شخصه در یک پروژه از آن ها استفاده نکرده ام نمی توانم مزایا و معایبش را درک کنم. به همین دلیل با یک پروژه ی تمرینی، از ساده ترین معماری یعنی MVP که از قدیم آشنایی بیشتری با آن داشتم، شروع کردم. برای اینکه پروژه ی تمرینی به پروژه های واقعی نزدیکتر باشد، از یک وب سرویس عمومی و رایگان به نام OMDb یا Open Movie Database کمک گرفتم که اطلاعات فیلم های مختلف را در اختیار عموم می گذارد.