دسته بندی ها
02:45 1400/01/04

مفهوم IOC یا Inversion Of Control در برنامه نویسی چیست ؟

مشخصات سوال کننده :
کاربر : pedram_khan     امتیاز کاربر : 277     رتبه کاربر : 6
دسته بندی : سی شارپ

به این سوال امتیاز بدهید    0
تعداد بازدید این سوال : 6512
هوش مصنوعی

پاسخ هوش مصنوعی

مفهوم IOC یا Inversion Of Control به معنای «معکوس سازی کنترل» در برنامه نویسی به یک الگو اشاره دارد که در آن، کنترل و مدیریت جریان برنامه به عهده فریم ورک یا محیط اجرایی است و نه خود برنامه نویس. این الگو به شکلی طراحی شده است که از وابستگی های مستقیم بین اجزای مختلف برنامه کاسته شود.

در این متد، به جای اینکه برنامه نویس مستقیماً اشیا را ایجاد یا مدیریت کند، این کار به فریم ورک یا container واگذار می شود. برای مثال، در پروژه های مبتنی بر DI (Dependency Injection) یا در میکروسرویس ها، IOC به حفظ جداسازی و انعطاف پذیری کد کمک می کند.

هدف اصلی IOC افزایش قابلیت آزمایش، نگهداری و مقیاس پذیری نرم افزار است. با این الگو، می توان به راحتی اجزای مختلف برنامه را تعویض یا تغییر داد بدون اینکه بر کل سیستم تأثیر بگذارد.

به این پاسخ امتیاز بدهید    0
امتیاز: - رتبه: -
پاسخ دهنده : fateme 02:59 1400/01/04

مفهوم IOC یا Inversion Of Control در برنامه نویسی چیست ؟

در واقع IOC یک معماری هست که در معماری های رایج برنامه نویسی مثل معماری پیازی پیاده سازی میشه. یکی از تعاریفی که در معماری تمیز وجود داره این هست که به طور کلی شما باید سعی کنید که هر کلاس یک وظیفه داشته باشه و وابستگی بین کلاس ها کمتر و کمتر باشه.

به عنوان مثال فرض کنید یک ریپازیتوری دارید که توابع و متدهایی رو داخل اون تعریف کردید. حالا قصد دارید در سایر کلاس ها از متدها و توابع این ریپازیتوری استفاده کنید. خب برای این کار باید یک نمونه از ریپازیتوری رو در کلاس مورد نظر تعریف کنید.

CustomerRepository customerRepo = new CustomerRepository();

خب وقتی شما یک نمونه از کلاس ریپازیتوری در کلاس دیگه ای تعریف میکنید به تمامی کلاسها، توابع و حتی دیتابیس (در صورتی که در ریپازیتوری استفاده شده باشد) دسترسی وجود دارد. همچنین در کلاس دوم یک کلاس دیگر که همان ریپازیتوری می باشد ایجاد شده است که در این صورت از اصول معماری تمیز فاصله گرفته است.

بنابراین در این موارد باید سعی کنید وابستگی این 2 کلاس را از بین ببرید که می تونید با تعریف یک Interface و استفاده از اینترفیس به جای استفاده مستقیم از ریپازیتوری وابستگی بین کلاس ها را از بین ببرید.

خب در این حالت اصطلاحا شما از IOC استفاده کرده اید.

 

 

به این پاسخ امتیاز بدهید    0
امتیاز: 1635 رتبه: 2
برای ارسال پاسخ لطفا وارد حساب کاربری خود شوید.   ورود