Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dependency Injection with Dagger 2

423 views

Published on

Dependency Injection with Dagger 2

این اسلاید‌ها برای ارائه‌ی تزریق وابستگی با استفاده از دگر۲ در لاگ‌کت بوده است. برای دیدن ویدیو این ارائه به لینک زیر مراجعه کنید.
https://www.youtube.com/playlist?list=PLT2xIm2X7W7iRrw6bWMoe9HeSWQHGXzJp

برای دیدن نمونه سورس اپلیکیشن به ریپو گیت‌هاب زیر بروید.
https://github.com/irlogcat/DaggerSample

Published in: Education
  • Be the first to comment

Dependency Injection with Dagger 2

  1. 1. ‫استف‬ ‫با‬ ‫وابستگی‬ ‫تزریق‬‫از‬ ‫اده‬ ‫دگر‬۲
  2. 2. ‫عباس‬‫اویس‬‫ی‬ http://abbas.oveissi.ir ‫شرکت‬‫هارمس‬ @abbas_oveissi
  3. 3. ‫سوال‬
  4. 4. •‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬ •‫دگر‬ ‫با‬ ‫آشنایی‬۲ •‫دامنه‬‫ها‬(Scopes) •‫توصیه‬‫ها‬ ‫فهرست‬
  5. 5. •‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬ •‫دگر‬ ‫با‬ ‫آشنایی‬۲ •‫دامنه‬‫ها‬(Scopes) •‫توصیه‬‫ها‬ ‫فهرست‬
  6. 6. ‫چیس‬ ‫وابستگی‬‫ت؟‬ ‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬ ‫کالس‬A‫کالس‬ ‫به‬B‫است‬ ‫وابسته‬.
  7. 7. ‫چیس‬ ‫وابستگی‬‫ت؟‬ ‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬ ‫کالس‬A‫کالس‬ ‫به‬B‫است‬ ‫وابسته‬. • Data Provider -> Database • Image Loader -> HTTP • REST -> HTTP • REST -> Deserializer
  8. 8. ‫وابستگی‬ ‫تزریق‬(DI)‫چیست؟‬ ‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬ ِ‫ق‬‫تزری‬‫وابستگی‬‫در‬‫‌نویسی‬‫ه‬‫برنام‬،‫شیءگرا‬‫الگوی‬‫طراحیست‬‫با‬‫قاعده‬‫‌ی‬ِ‫ی‬‫اصل‬ ‌ِ‫ن‬‫جداکرد‬‫رفتار‬‫از‬‌ِ‫ل‬‫تحلی‬‫نیازمندی‬‫فنی‬‫برای‬ِ‫ن‬‫‌کرد‬‫ه‬‫تجزی‬‌ِ‫ی‬‫‌ها‬‫ه‬‫مؤلف‬‫بس‬‫یار‬‌ِ‫ل‬‫مستق‬ ‫‌افزاری‬‫م‬‫نر‬.–‫ویکیپدیا‬‫فارسی‬
  9. 9. ‫وابستگی‬ ‫تزریق‬(DI)‫چیست؟‬ ‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬
  10. 10. ‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬ Vs.
  11. 11. ‫معکوس‬ ‫وابستگی‬ ‫اصل‬(DIP)‫چیست؟‬ ‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬ DIP
  12. 12. ‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬ •‫گذاشتن‬ ‫اشتراک‬ ‫به‬‫وابستگی‬‫ها‬ •‫بین‬ ‫اتصال‬ ‫شدن‬ ‫سست‬‫بخش‬‫های‬‫کد‬ ‫مختلف‬(loosely coupled) •‫قابلیت‬ ‫بردن‬ ‫باال‬‫تست‬‫پذیری‬ ‫الگوی‬ ‫از‬ ‫استفاده‬ ‫دالیل‬DI
  13. 13. ‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬ •‫بصورت‬‫دستی‬ •‫یادگیری‬ ‫به‬ ‫نیاز‬‫فریم‬‫ورک‬‫نیست‬ •‫بصورت‬‫از‬ ‫استفاده‬ ‫با‬ ‫خودکار‬‫فریم‬‫ورک‬‫ها‬ •‫کمتر‬ ‫نوشتن‬ ‫کد‬ •‫در‬ ‫یکپارچگی‬‫پیاده‬‫سازی‬ ‫پیاده‬‫سازی‬‫الگوی‬DI
  14. 14. •‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬ •‫دگر‬ ‫با‬ ‫آشنایی‬۲ •‫دامنه‬‫ها‬(Scopes) •‫توصیه‬‫ها‬ ‫فهرست‬
  15. 15. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲ •‫دگر‬ ‫تفاوت‬۱‫دگر‬ ‫با‬۲ •‫دگر‬ ‫مزایای‬۲ •‫از‬ ‫نکردن‬ ‫استفاده‬reflection •‫کد‬ ‫تولید‬‫باال‬ ‫خوانایی‬ ‫قابلیت‬ ‫با‬ •‫زمان‬ ‫در‬ ‫خطا‬ ‫تشخیص‬ ‫امکان‬‫کامپایل‬ ‫فریم‬‫ورک‬‫دگر‬۲
  16. 16. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲ •‫لیست‬ ‫دریافت‬‫فیلم‬‫ها‬‫سرور‬ ‫از‬ •‫کردن‬ ‫ذخیره‬‫لیست‬‫ها‬‫کش‬ ‫در‬ •‫س‬ ‫به‬ ‫نسبت‬ ‫کش‬ ‫از‬ ‫لیست‬ ‫دریافت‬ ‫داشتن‬ ‫اولویت‬‫رور‬ ‫مثال‬:‫اپلیکیشن‬‫لیست‬ ‫نمایش‬‫فیلم‬‫ه‬‫ا‬
  17. 17. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲ .‫شناسایی‬ ۱‫وابستگی‬‫ها‬‫آنها‬ ‫کردن‬ ‫فراهم‬ ‫و‬ •‫از‬ ‫استفاده‬@Module‫و‬@Provide .‫در‬ ‫وابستگی‬ ‫درخواست‬ ۲‫کالس‬‫های‬‫وابسته‬ •‫از‬ ‫استفاده‬@Inject .‫تزریق‬ 3‫وابستگی‬‫ها‬ •‫از‬ ‫استفاده‬@Component ‫دگر‬ ‫از‬ ‫استفاده‬ ‫مراحل‬۲
  18. 18. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲ •‫کالس‬ ‫ساخت‬‫ماژول‬‫کردن‬ ‫فراهم‬ ‫برای‬‫وابستگی‬‫ها‬ •‫از‬ ‫استفاده‬@Module‫کالس‬ ‫برای‬ •‫از‬ ‫استفاده‬@Provides‫برای‬‫متد‬‫ها‬ ‫مرحله‬‫ی‬‫اول‬-‫شناسایی‬‫وابستگی‬‫ها‬‫و‬‫آنها‬ ‫کردن‬ ‫فراهم‬
  19. 19. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲
  20. 20. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲
  21. 21. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲
  22. 22. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲
  23. 23. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲
  24. 24. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲ •‫سازنده‬ ‫تزریق‬ •‫فیلد‬ ‫تزریق‬ •‫متد‬ ‫تزریق‬* ‫مرحله‬‫ی‬‫دوم‬-‫در‬ ‫وابستگی‬ ‫درخواست‬‫کالس‬‫های‬‫وابسته‬
  25. 25. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲ •‫سازنده‬ ‫تزریق‬ •‫باشد‬ ‫کالس‬ ‫کد‬ ‫به‬ ‫دسترسی‬ ‫امکان‬ ‫باید‬
  26. 26. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲ •‫فیلد‬ ‫تزریق‬
  27. 27. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲ •‫ساخت‬‫اینترفیس‬‫کامپوننت‬ •‫بین‬ ‫پل‬‫ماژول‬‫ها‬‫و‬‫کالس‬‫های‬‫وابسته‬ •‫کننده‬ ‫تزریق‬ •‫کننده‬ ‫مدیریت‬‫دامنه‬‫ها‬ ‫مرحله‬‫ی‬‫سوم‬-‫تزریق‬‫وابستگی‬‫ها‬
  28. 28. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲
  29. 29. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲
  30. 30. ‫دگر‬ ‫مفاهیم‬ ‫با‬ ‫آشنایی‬۲
  31. 31. •‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬ •‫دگر‬ ‫با‬ ‫آشنایی‬۲ •‫دامنه‬‫ها‬(Scopes) •‫توصیه‬‫ها‬ ‫فهرست‬
  32. 32. ‫دامنه‬‫ها‬(Scopes)
  33. 33. ‫دامنه‬‫ها‬(Scopes)
  34. 34. ‫دامنه‬‫ها‬(Scopes) •‫ماهیت‬ ‫بودن‬ ‫یکسان‬@Singleton‫با‬‫دامنه‬‫های‬‫سفارشی‬ •‫کاربرد‬‫دامنه‬‫های‬‫در‬ ‫سفارشی‬‫صحت‬‫سنجی‬‫کد‬ •‫دامنه‬‫ی‬@Reusable
  35. 35. ‫دامنه‬‫ها‬(Scopes) •‫از‬ ‫استفاده‬@Singleton
  36. 36. ‫دامنه‬‫ها‬(Scopes) •‫دامنه‬‫های‬‫سفارشی‬
  37. 37. ‫دامنه‬‫ها‬(Scopes) •‫بین‬ ‫اتصال‬‫دامنه‬‫های‬‫مختلف‬ •‫بین‬ ‫وابستگی‬ ‫از‬ ‫استفاده‬‫کامپوننت‬‫ها‬ •‫از‬ ‫استفاده‬SubComponent
  38. 38. ‫دامنه‬‫ها‬(Scopes) •‫بین‬ ‫وابستگی‬ ‫از‬ ‫استفاده‬‫کامپونن‬‫ت‬‫ها‬
  39. 39. ‫دامنه‬‫ها‬(Scopes) •‫بین‬ ‫وابستگی‬ ‫از‬ ‫استفاده‬‫کامپونن‬‫ت‬‫ها‬
  40. 40. ‫دامنه‬‫ها‬(Scopes) •‫از‬ ‫استفاده‬SubComponent
  41. 41. ‫دامنه‬‫ها‬(Scopes) •‫از‬ ‫استفاده‬SubComponent
  42. 42. •‫وابستگی‬ ‫تزریق‬ ‫مقدمه‬ •‫دگر‬ ‫با‬ ‫آشنایی‬۲ •‫دامنه‬‫ها‬(Scopes) •‫توصیه‬‫ها‬ ‫فهرست‬
  43. 43. ‫توصیه‬‫ها‬ •‫از‬ ‫استفاده‬‫متد‬‫های‬‫استاتیک‬‫به‬‫جای‬‫متد‬‫های‬‫معمولی‬ •‫تعداد‬ ‫تشخیص‬ ‫چگونگی‬‫ماژول‬‫ها‬‫و‬‫کامپوننت‬‫ها‬ •‫نحوه‬‫ی‬‫از‬ ‫استفاده‬ ‫بین‬ ‫انتخاب‬@Subcomponent‫وابستگی‬ ‫و‬ ‫کامپوننتی‬
  44. 44. ‫توصیه‬‫ها‬ •‫از‬ ‫استفاده‬@Binds
  45. 45. ‫توصیه‬‫ها‬ •‫پکیج‬dagger.android •‫از‬ ‫استفاده‬@BindInstance
  46. 46. ‫سوال‬

×