خانه » آموزش برنامه نویسی اندروید » سلسله آموزش های درخواستی قسمت اول —>تزریق وابستگی

سلسله آموزش های درخواستی قسمت اول —>تزریق وابستگی

برای این که  در جریان آموزش های هفتگی باشید به اینجا سر بزنید

تزریق وابستگی به این دلیل  اختراع شد یا ایجاد شد که یه قانونی هست در حوضیه برنامه نویسی شی گرای به نام جامد (SOLID)  که به خاطر اظهار فضل  اقای رابرت مارتین به وجود اومده (یعنی قانون این آقاه ساخته) که تشکیل شده از ۵ بخش که بخش اولش یا  S – SRP – Single responsibility Principle  میگه هر کلاس

باید یه مسولیت واحدی داشته باشه  مثلا  این کد ببینید

public class Employee
{
    privte string EmployeeName ;
    privte int EmployeeNo ;
    privte int EmployeeAge ;

    public void Insert(Employee e)
    {
        //یه چیزی به دستابیس  اضافه کنه 
    }

   public Employee Select()
    {
        //خوندن از دیتابیس 
    }


    public void GenerateReport(Employee e)
    {
        //از کارمند ها یه گزارش بگیره و یه جا نمایش بده 
    }


}

 

 

یه کلاسه که سه تا تابع داره  که تقریبا هیچ ربطی به هم  ندارن  یعنی دو تا ش  یه کاری مشترکی میکن یعنی اضافه کردن و  خوندن از دیتابیس ولی یکیش میاد یه چیزی رو نمایش میده تو یه لیست یه طور مثال , خوب به ما میگن یه تغییری باید بدی تو نرم افزارت  ما تو این جور کلاس ها اگر بخوایم یه تغییر تو ساختار بدیم باید بریم تو تک به تک تابع ها این تغییر ایجاد کنیم  . ولی در صورتی که این بهینه نیست  ما اگر قرار شد تغییر بدیم باید تو یه جا اون تغییر اعمال کنیم  نه چند جا  تا درست بشه .حالا این که ما جوری کد بزنیم  که در صورت تغییر این اتفاق بی افته یعنی .نیازی نباشه همه جا رو تغییر بدیم باید از قانون اول رابرت استفاده کینم  .کد زیر ببینید .

public class Employee
{
    privte string EmployeeName ;

    privte int EmployeeNo ;
}


public class EmployeeDB
{
    public void Insert(Employee e)
    {
        //Database Logic written here
    }
    public Employee Select()
    {
        //Database Logic written here
    }
}

public class EmployeeReport
{
    public void GenerateReport(Employee e)
    {
        //Set report formatting
    }
}

 

کلاس شلوغ بالای تبدیل شد به دو تا کلاس یکی برای کار روی دیتابیس یکی برای گزارش گیری و کار روی ویو ها .

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

ببنید بچه ها با یک مثال  شروع میکنم .یه کلاس داریم که  باید یه عکس رو داخلش لود کنیم  بار اول میام تو  تابع هاش کلاس پیکاسو رو میسازم  و استفاده میکنم

public class User{  
 
    private Picasso picasso;
 
    public User() {
        picasso = new Picasso();
    }
}

 

الان در حال  بالا کلاس  user  ما به کلاس پیکاسو وابسته شده چون یه نسخه از پیکاسو  رو داخلش ساختیم و داریم  ازش استفاده میکنیم .

حالا اگر بخوایم قوانین تزریق وابستگی رو رعایت کنیم نباید داخل کلاسی یه کلاس دیگه رو بسازیم  باید یه نسخه ار کلاسی که احتیاج داریم  رو بهش بدیم حالا یعنی چی این

به کد زیر دقت کنید

public class User {   
 
        private Picasso picasso;

    public User(Picasso picasso) {
        this. picasso = picasso;
    }
}

 

 

ببیند الان هر وقت بخوایم از کلاس یوزر استفاده کنیم مجبوریم یه نسخه از پیکاسو رو بهش بدیم و از این نسخه استفاده میکنیم و دیگه مجبور نیستیم یه نسخه ازش بسازیم . به این میگن تزریق وابستگی .همین بیشتر از این مجبورم  هفته بد با آموزش بدی بگم چون به هم  ربط دارن

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

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

برچسب ها:
پست قبلی
پست بعدی

درباره یونس علی آبادی

یونس علی آبادی . برنامه نویس اندروید و دیگر هیچ 09033846222

5 دیدگاه

  1. واقعا عالی بود…
    اون فیلم اول که مبحث مورد نظر رو میگید خیلی کمک کرد و خواهد کرد.

    لطفا همینطوری ادامه بدید.

    خداقوت.

  2. جواد طلوع هنری

    متاسفانه من خیلی متوجه نشدم

    • یونس علی آبادی

      چیزی نداره متوجه بشید . اصلش برای استفاده کردن از کتابخانه dagger2 گفتم فیلم این هفته رو دنبال کنید همه چیز یاد میگیرید

  3. سلام
    تشکر بابت آموزش های خوبتون
    این آموزش ها امکان دانلود رو نداره؟

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نمی شود.علامت دارها لازمند. *

*

رفتن به بالا