معکوس سازی چیست؟
معکوس سازی کنترل و یا Inversion of Control، اولین قدم شما برای به دست آوردن یک طراحی Loosely Couples می باشد. Inversion of Control که تحت عنوان معکوس سازی کنترل و به طور کوتاه با عبارت IOC نیز شناخته می شود. در واقع یک اصل طراحی است که میتواند روند توسعه یک نرمافزار را بهبود ببخشد. دقت کنید که علیرغم اینکه بعضی از افراد معکوس سازی کنترل را به عنوان یک الگو می شناسند. این در واقع Design Principle و یا اصل طراحی است. بین الگوها و اصول طراحی، تفاوت هایی وجود دارند که در حال حاضر وارد جزئیات مربوط به آنها نمیشویم. ضمناً توصیه میکنیم که در صورت تمایل از آموزش الگو های طراحی (Design Pattern) ها در سی شارپ از وبسایت پرووید نیز دیدن کنید. همانطور که از نام اصل معکوس سازی کنترل مشخص است، تلاش در پیاده سازی این اصل، معکوس کردن کنترل های مختلفی است که شما در طراحی شی گرای خود لحاظ کردهاید. این موضوع هدف به دست آوردن Loose Coupling و مدیریت وابستگی های یک سیستم شی گرا، پیاده سازی می شود. در این جملات منظور از کنترل و معکوس کردن کنترل ها، هرگونه مسئولیت اضافی ای است که یک کلاس میبایست در کنار مسئولیت اصلی خود، آنها را نیز پیاده سازی و مدیریت کند. برخی از کنترل هایی که یک کلاس نیاز دارد احتمالاً آنها را مدیریت کند روال و یا Flow مربوط به یک برنامه، روال ایجاد شدن آبجکت ها، روال ایجاد شدن Dependency ها و حتی عملیات Binding می باشد. اساس Inversion of Control معکوس کردن تمامی این مسئولیتها است.
بگذارید برای درک هرچه بهتر این موضوع مثالی را بررسی کنیم. فرض کنید که شما هر روز برای رفتن به سر کار از اتومبیلتان استفاده کرده و آن را کنترل می کنید. به عبارت دیگر رانندگی کردن برای شما به عنوان یک مسئولیت است و شما کنترل یک اتومبیل را هر روز انجام می دهیم. حال برای پیاده سازی کردن اصل Inversion of Control شما می بایست یک شخص دیگر را استخدام کنید تا این کنترل و یا وظیفه را برای شما انجام بدهد. به عبارت دیگر به جای اینکه خودتان یک اتومبیل را برانید از شخص دیگری می خواهید این مسئولیت را برای شما پیاده سازی کند. این موضوع همان Inversion of Control است. با استفاده از این روش کنترل از شما به عنوان یک راننده به یک راننده دیگر اختصاص داده شده است. این موضوع باعث میشود که بخشی از مسئولیت های شما کاهش یابد و دیگر نگران وظیفه رانندگی کردن نباشید. به عبارت دیگر شخصی دیگر مسئولیت رانندگی کردن را به عهده می گیرد و شما می توانید بر روی وظیفه مهمترین تمرکز کنید.
مخاطبین این دوره آموزشی
تمامی افرادی که می خواهند به طور ابتدایی و از سطوح بسیار پایین با مباحث مربوط به Inversion of Control و یا معکوس سازی کنترل آشنا بشوند میتوانند از موضوعات مطرح شده در این آموزش استفاده کنند. مباحث مطرح شده در این دوره آموزشی شما را با موضوعات مختلفی در رابطه با تزریق وابستگیها و همچنین IOC Container ها آنها آشنا خواهد کرد برنامه نویسانی که موضوعات مربوط به شیء گرایی را میدانند و حال میخواهند با استفاده از مباحث پیشرفته تری از قبیل Inversion of Control شرایط معماری نرم افزار خود را بهبود ببخشند مخاطبین این دوره آموزشی به حساب میآیند.
پیش نیازها
برای یادگیری موضوعات مربوط به این دوره آموزشی میبایست مباحث مربوط به شی گرایی را بدانید. در این رابطه توصیه میکنیم از آموزش شی گرایی OOP در سی شارپ و آموزش پیشرفته برنامه نویسی شی گرا در سی شارپ دیدن کنید. دانش شما در رابطه با زبان برنامه نویسی سی شارپ موضوعاتی از قبیل اینترفیس ها نیز بسیار مفید خواهند بود. در این رابطه توصیه میکنیم از آموزش اینترفیس ها در سی شارپ دیدن کنید. پس از تکمیل کردن مباحث مطرح شده در این آموزش متنی می توانید از آموزش معکوس سازی کنترل Inversion of Control در سی شارپ نیز استفاده کنید.
2 Comments