خوش برگشتید.
تو این ویدیو می‌خوایم در مورد dependency injection و به‌طور خاص، dependencies صحبت کنیم.
dependency injection یه مفهوم خیلی قدرتمنده، مخصوصاً تو زبان‌های برنامه‌نویسی object oriented.
و برای اینکه بفهمیم dependencies چی هستن و dependency injection چیه، اول باید واقعاً
روی dependencies تمرکز کنیم.
باشه.
می‌خوایم یه مثال خیلی ساده استفاده کنیم که در مورد یه builder هست که به ابزار نیاز داره.
خب dependencies چی هستن؟
Dependencies به object یا component هایی اشاره داره که یه class برای عملکرد درستش نیاز داره.
فکر کنید dependencies مثل ابزار یا سرویس‌های ضروری هستن که یه class برای انجام کارهاش بهشون متکیه.
مثلاً تصور کنید شما یه سازنده هستید.
برای ساختن یه خونه، به ابزارهای مختلفی مثل چکش، اره، میخ و چند ابزار دیگه نیاز دارید.
و این ابزارها، dependencies شما هستن.
حالا بیایید dependencies رو تو یه مثال عملی توی کدمون ببینیم.
پس شروع می‌کنیم با یه public class به اسم hammer.
خب یه hammer داریم.
و یه method داخلش داریم که فقط اسمش رو می‌ذاریم use.
پس باید بتونیم از hammer استفاده کنیم.
وقتی این کارو کنیم، منطق hammer اتفاق می‌افته.
مثلاً میخ زدن.
مثال خیلی ساده.
میخ می‌زنیم.
Hammer برای چیه؟ برای میخ زدن.
یا برای شکستن چیزی، درسته؟
گاهی فقط برای شکستن چیزی هست، مثلا وقتی در حال بازسازی هستید.
این Hammer ما بود.
حالا بیاییم builder خودمون رو بسازیم، public class builder.
خب.
حالا builder ما به یه hammer نیاز داره.
پس کاری که می‌کنیم اینه که یه hammer داشته باشیم.
این hammer private خواهد بود.
پس property یا چیز دیگه‌ای نیست.
و بعد توی constructor، public builder، باید اون hammer رو ست کنیم.
پس hammer یه new hammer خواهد بود.
اینجا builder مسئول ایجاد dependencies خودش هست.
یعنی چی؟
یعنی builder مسئول آوردن hammer خودش هست.
اگر builder هنگام ایجاد خودش یا شروع کار hammer خودش رو نیاورد، نمی‌تونه کار رو انجام بده.
پس این همون dependency ماست.
بعد می‌تونم بگم builder شروع می‌کنه به ساختن خونه و چیزی پاس نمی‌کنیم.
فقط از hammer خودش استفاده می‌کنیم و بعد می‌گیم خانه ساخته شد، house built.
خب واضحاً فقط hammer کافی نیست.
پس چرا اره رو هم نمیاریم؟
پس بیاییم یه public class saw بسازیم.
اره هم یه method خواهد داشت.
می‌تونید اسم method رو saw یا sawing بذارید.
یا می‌تونید بگید public void use.
خب.
این method هم یه Console.WriteLine ساده خواهد بود.
و می‌گیم sawing wood.
خب.
حالا builder ما نباید اره رو فراموش کنه.
بیاییم ازش استفاده کنیم.
حالا یه اره داریم ولی هنوز با خودمون نیاوردیم.
می‌تونیم با خودمون بیاریم.
چون اره‌ها وجود دارن، درسته؟
به عنوان builder می‌دونیم اره‌ها وجود دارن.
پس الآن می‌دونم اره وجود داره و دارم میارمش.
من اره جدیدم رو میارم.
البته همیشه لازم نیست اره جدید باشه، ولی باید new رو استفاده کنیم تا یه اره جدید بسازیم.
حالا هر وقت builder خونه می‌سازه، می‌تونه از اره‌اش هم استفاده کنه.
خب.
حالا dependency کجاست؟
dependency اینه که builder به hammer و saw وابسته است.
پس حالا saw و hammer، dependencies برای builder هستن.
همین چیزی هست که داریم می‌گیم.
باشه.
خب تقریباً تمام شد برای dependencies.
حالا تو ویدیوی بعدی می‌بینیم dependency injection چیه.
چطور dependencies رو inject می‌کنیم.
پس تو ویدیوی بعدی می‌بینمتون. ```