شماره تماس 09336863931 | 09178169907 پست الکترونیک provid.ir@gmail.com

آموزش اصل Inversion of Control در برنامه نویسی #7

آموزش اصل Inversion of Control در برنامه نویسی #7 را در این قسمت از وبسایت آموزش برنامه نویسی پرووید دانلود کنید.

کنترل ساختن وابستگی‌ ها

اصل Inversion of Control می تواند به روشی دیگر برای کنترل کردن وظیفه ساختن اشیایی که به آنها وابستگی داریم نیز استفاده شود. در ابتدا بیایید در قالب یک مثال ساده ببینیم منظور از وابستگی چیست. لطفاً کدی که در ادامه آمده است را نگاه کنید.

public class A
{
    B b;

    public A()
    {
        b = new B();
    }

    public void Task1() {
        // do something here..
        b.SomeMethod();
        // do something here..
    }

}

public class B {

    public void SomeMethod() { 
        //doing something..
    }
}

در کدی که در قسمت بالا مشاهده کردید کلاس A متد SomeMethod از کلاس B را برای انجام دادن وظیفه خود که تحت عنوان Task1 تعریف شده است صدا می ‌زند. در واقع کلاس A نمی تواند این وظیفه را بدون استفاده از کلاس B و متد مذکور انجام دهد. به همین دلیل می توانیم بگوییم که کلاس A وابسته به کلاس B است یا اینکه کلاس B یک وابستگی یا همان Dependency برای کلاس A است. در طراحی شی گرا کلاس ها اغلب نیاز به تعامل با همدیگر دارند تا بتوانند وظایف برنامه یا Functionality های آن را انجام دهند.

بسته ی جامع آموزش Inversion of Control و IoC Container ها

از شما دعوت می کنیم که از بسته ی جامع آموزش Inversion of Control و IoC Container ها دیدن کنید.

همانطور که در مثال بالا دیدید کلاس A برای انجام کاری به یک شی از کلاس B نیازمند است. در مثال بالا کلاس A یک شی از کلاس B را می‌سازد و حتی چرخه حیات (Lifetime) آن را نیز مدیریت می‌کند. ساده بگوییم کنترل ساخت و چرخه حیات کلاس B به عهده ی کلاس A است. بنابراین یک وابستگی بین کلاس A و کلاس B وجود دارد. بر اساس اصل Inversion of Control ما باید این کنترل را معکوس کنیم. به عبارتی وظیفه ساختن یک شی از کلاس B را نه به کلاس A بلکه به یک کلاس دیگر بدهیم. همانطور که در کد زیر مشاهده می کنید وظیفه ساختن این وابستگی که همان کلاس B است را از کلاس A گرفته و آن را به یک کلاس دیگر تحت عنوان Factory داده ایم.

public class A
{
    B b;

    public A()
    {
        b = Factory.GetObjectOfB ();
    }

    public void Task1() {
        // do something here..
        b.SomeMethod();
        // do something here..
    }
}

public class Factory
{
    public static B GetObjectOfB() 
    {
        return new B();
    }
}

نظر بدهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *