قبل از تشریح این کتابخانه لازم که دو تا سوال مهم مطرح بشه !
خب برای جواب به سوال اولمون باید سری به یکی از اصول مهندسی نرم افزار بزنیم ،اصلی به نام
که به اختصار IoC هم میگن . اما این اصل چی میگه ؟! میگه بیا کنترل اشیا داخل برنامه و بخشی از نرم افزارو انتقال بده به بخشی مستقل و جداگانه (کنترل اشیا شمال new کردن و.. میشود) . خب اینکار چه فایده ای داره ؟
خب برای پیاده سازی این اصل (IoC) در نرم افزار ما ،راه های مختلفی وجود دارد از جمله :
اما ما تو این آموزش با مورد 6 یعنی Dependency Injection سروکار داریم (کتابخانه مورد نظر ما در این دسته بندی قرار دارد) . Dependency Injection به اختصار DI گوییم .
کتابخانه های مختلفی برای پیاده سازی DI وجود دارد از جمله :
اما نوبت میرسه به جواب سوال دوممون که در ابتدای آموزش مطرح شد !
چرا Dagger ؟
کتابخانه های مطرح شده مکانیزم های مختلفی برای پیاده سازی DI استفاده می کنند که برخی از کتابخانه ها به کمک مبحث Reflection اینکارو انجام میدن . اما Reflection چیه ؟ به طور خیلییی کوتاه قابلیتی است که به کمک اون میتونیم در زمان اجرا (Runtime) تغییراتی در کد جاوا برنامه ایجاد کنیم ! کههه یکی از مراحل اینکار Scan کردن کلاس جاواست که همین امر زمان و حافظه ای مصرف می کند در نهایت این عمل در گوشی های هوشمند که حافظه کمی دارند منظقی نیست ! (اگه متوجه نشدین اصلا مهم نیست ربطی به آموزش ما نداره ) اما Dagger با استفاده از Annotation Processing اینکارو در زمان کامپایل انجام میدهد که مشکلات سرعت پایین و اشغال حافظه در زمان اجرا را ندارد .
ادامه این آموزش به 2 بخش تقسیم میشه :
موفق باشید .