رده : Zend_Cache

سریع شروع سیمفونی DI (تزریق وابستگی) خودآموز

Steven ، سه شنبه ، 14 آگوست 2010 14:21

تزریق وابستگی (DI) چیست ؟

تزریق وابستگی یک تکنیک است که اجازه می دهد تا برای آزادانه همراه اشیاء در درون یک برنامه نرم افزاری است. به طور کلی اگر یک شی ، نیاز به دسترسی به قابلیت های دیگر این امر می تواند نمونه داخلی که منجر به سیستم های محکم همراه. با پیاده سازی تزریق وابستگی به اشیاء مورد نیاز برای استفاده آماده (-- IOC گاهی هم به کنترل معکوس به آن اشاره شده) را تزریق کند. مثال زیر :

  <؟ پی اچ پی
 کلاس DecisionMaker {
     makeDecision تابع عمومی (آرایه $ پارامترهای) {
         / / آیا نیازمند آداپتور پایگاه داده
         $ DP = جدید DecisionParameters () ؛
         دلار parameterScore = $ DP -> getScore (پارامترها) ؛
         / *...  از منطق تصمیم...  * /
         بازگشت ($ parameterScore> 50) ؛
     }
 } 

این قطعه از کد ، گفت که باید محکم به شی DecisionParameters همراه است. بازنویسی فوق در مد آزادانه همراه ما می خواهم چیزی را دوست داشته باشند و....

  <؟ پی اچ پی
 کلاس DecisionMaker {
     خصوصی دلار _dp ؛
     عمومی تابع __construct ($ DP) {
         این _dp = $ DP ؛
     }
     makeDecision تابع عمومی (آرایه $ پارامترهای) {
         دلار parameterScore = $ -> _dp -> getScore (پارامترها) ؛
         / *...  از منطق تصمیم...  * /
         بازگشت ($ parameterScore> 50) ؛
     }
 } 

در حالیکه به دست آوردن منافع از کد آزادانه همراه ما در حال اضافه کردن پیچیدگی چنین است که هر زمان یک شی نمونه ما نیز باید به این نمونه از وابستگیهای آن بسته و تصویب این بیش از حد. به عنوان مثال ، این است :

  $ = جدید انتخاب DecisionMaker () ؛
 اکو $ انتخاب -> makeDecision (آرایه ('تلاش' => 'پایین' ، 'بازگشت' => ​​'بالا')) ؛ 

در حال حاضر می شود :

  $ DP = جدید DecisionParameters () ؛
 دلار انتخاب = جدید DecisionMaker (DP) ؛
 اکو $ انتخاب -> makeDecision (آرایه ('تلاش' => 'پایین' ، 'بازگشت' => ​​'بالا')) ؛ 

این وضعیت دردناک تر می شود به عنوان تعدادی از وابستگی برای یک کلاس افزایش می یابد ، و چه می شود اگر وابستگیهای خود وابستگیها؟ این کاملا می تواند به سرعت تبدیل به کابوس دولت شی! را وارد کنید وابستگی به تزریق ظروف (چارچوب)...
ادامه خواندن "سیمفونی سریع شروع DI (تزریق وابستگی) خودآموز' »













تم پانوراما توسط Themocracy

6 بازدید کننده آنلاین نیست.
3 مهمان ها ، 3 رباتها ، 0 عضو
بازدید کنندگان ماکس امروز : 17 ، ساعت 04:02 UTC
این ماه : 19 در 19-08-2011 06:09 AM محلی UTC تنظیم شده اند
در این سال به 130 28-03-2011 10:40 PM محلی UTC تنظیم شده اند
تمام زمان ها : 130 28-03-2011 10:40 PM محلی UTC تنظیم شده اند