شروع کار با Inversion of Control

در این قسمت ما در رابطه با Inversion of Control و نحوه ی پیاده سازی آن صحبت خواهیم کرد. این اولین قدم در رسیدن به یک طراحی Loosely Coupled است که می توانید جزئیات بیشتر آن را در تصویر زیر ببینید


اصل Inversion of Control یک اصل طراحی (Design Principle) است هر چند که ممکن است بعضی از افراد از آن به عنوان یک الگوی طراحی یاد کنند. همانطور که نام Inversion of Control بر می آید از این اصل برای معکوس کردن انواع مختلفی از کنترل ها در یک طراحی شی گرا استفاده می شود. در این تعریف معنی کلمه کنترل هر مسئولیت مازادی نسبت به مسئولیت اصلی یک کلاس است. برای مثال کنترل جریان (Flow) برنامه و یا کنترل بر روی اشیای که یک کلاس به آن وابسته هستند از قبیل کنترل ساخت یک شی از ان کلاس یا Bind کردن آن. این معکوس سازی ما را به سمت یک طراحی Loose Coupled سوق می دهد.

بیایید یک مثال ساده تر از اصل Inversion of Control را در دنیای واقعی با هم بررسی کنیم. فرض کنید که شما برای رفتن به س رکار ماشینی را دارید که مجبور هستید آن را برای چند کیلومتر به سمت دفتر کار خود برانید. در چنین شرایطی کنترل ماشین در دست شماست یعنی شما ماشین را کنترل می‌کنید و یا شما رانندگی را به عهده میگیرید. بر اساس اصل Inversion of Control اگر بخواهید این کنترل را معکوس کنید به این معنی است که یک راننده استخدام کنید تا وی ماشین را برای شما براند و شما را به سر کار برساند. در واقع با انجام چنین کاری مسئولیت کنترل کردن ماشین و یا همان رانندگی از شما گرفته شده و به شخصی دیگر داده می‌شود. در این حال شما می‌ توانید در ماشین نشسته و تمرکزتان را بر روی کاری دیگر بگذارید و راننده‌ ای که استخدام کرده اید مسئولیت رانندگی را به عهده بگیرد. اصل Inversion of Control مزیت ‌های زیادی را دارد. برای مثال رسیدن به یک طراحی Loose Coupled و یا بهبود قابلیت های قابل تست بودن یا همان Testability و نگهداری یا همان Maintainability و قابل گسترش بودن یا همان Extensibility. در ادامه در رابطه با اصل Inversion of Control و انواع مختلفی از کنترل که می توانند معکوس شوند صحبت خواهیم کرد.

پرووید: مرکز آموزش تخصصی برنامه نویسی و توسعه نرم افزار