سلام به هم دوره ایهای عزیز
خب اول یک توضیح کوتاهی راجب Provider بخوام بدم این هست که به ما کمک میکنه تا افزونگی کد (code redundancy) کاهش پیدا کنه و کار هارو براتون آسونتر میکنه
حالا بیاین بفهمیم ioc چی هست!
به طور عامیانه اگه بخوام توضیح بدم فرض کنید دارید با ماشینتون تا محل کارتون رانندگی میکنین که به این معنا هست کنترل ماشین دست شماست و راننده شما هستین اما در اصل IoC، شما کنترل کردن رو به قولی معکوس یا محول میکنید
حالا این چیزی که گفتم یعنی چی؟
به این معنا هست که شما به جای اینکه خودتان رانندگی کنید، شما یک تاکسی میگیرین و شخص دیگری به جای شما رانندگی میکنه
حالا بزارین با یک مثال جلو بریم :)
void main() {
Truck A = Truck();
Truck B = Truck();
}
class Driver{
String name;
String stars;
}
class Truck(
Driver driver;
Truck() {
driver = Driver();
}
در کد بالا ما اومدیم یک نمونه (instance) از کلاس driver داخل سازنده کلاس Truck ساختیم، خب نتیجه چی میگیریم از این قضیه؟
بیاین با هم بازش کنیم، در اصل یعنی کنترل ایجاد نمونه از کلاس driver به عهده کلاس Truck هست
حالا فرض کنید Truck b رو که یک Truck جدید هست رو با همون راننده میخوایم خب در حالت عادی این غیر ممکن هست
حالا بیاین کد بالا رو با IoC ببینیم:
void main(){
Truck a = Truck()..setDriver = Driver();
}
class Driver {
String name;
String stars;
}
class Truck{
Driver _driver;
set setDriver(Driver driver){
_driver = driver;
}
}
با کمک اصل IoC ما اومدیم یک تابع setter داخل کلاس Truck ساختیم که وظیفه ست کردن راننده رو بر عهده داره
بنابراین، کنترل ایجاد یک نمونه از کلاس Driver داخل کلاس Truck به کلاسی که خود کلاس را ایجاد میکنه منتقل شد
امیدوارم تونسته باشم مفهوم رو منتقل کنم :)