شرح مفهوم تزریق وابستگی (Dependency Injection)
چهارشنبه 9 اردیبهشت 1394در این مقاله مبانی تزریق وابستگی را فراخواهیم گرفت
در این مقاله مبانی تزریق وابستگی را فراخواهیم گرفت.
تزریق وابستگی چیست؟(What is Dependency injection)
تزریق وابستگی یک نرم افزار ااگوی طراحی است که کنترل را پیاده سازی معکوس می کند.
تزریق وابستگی به عنوان وارونگی کنترلر نیز شناخته میشود .
public class User { GoogleSMTPEmailSend googleSender; public User() { googleSender = new GoogleSMTPEmailSend(); } public void PostArticle() { //mail for successfull post googleSender.SendEmail(); } } class GoogleSMTPEmailSend { public void SendEmail() { //send email for successful post } }
در کد بالا شما tight coupling را مشاهده میکنید درنظربگیرید که در آینده بخواهیم از SMTP دیگر مثل یاهو برای ارسال ایمیل استفاده کنیم .در اینجا نیاز داریم کد را تغییر دهیم و به همین دلیل این tight coupling است.
حال برای حذف tight coupling چیکار کنیم؟
public interface IEmailSender { void SendEmail(); } class GoogleSMTPEmailSend: IEmailSender { public void SendEmail() { //send email for successful post } } public class User { public IEmailSender emailSender; public User() { emailSender = new GoogleSMTPEmailSend(); } public void PostArticle() { //mail for successfull post emailSender.SendEmail(); } }
همانطور که در بالا مشاهده میکنید این جدا شده است ولی هنوز یک شی به هم چسبیده از کلاس در اینجا وجود دارد به عبارت دیگر:
emailSender = new GoogleSMTPEmailSend();
ما مشکلات بیشتری داریم:
User: PostArticle() IEmailSender GoogleSMTPEmailSend();
PostArticle روی هردو IEmailSender و GoogleMSTPEmailSend وابسته است.
public class User { public IEmailSender emailSender; public User(IEmailSender _emailSender) { emailSender = _emailSender; } public void PostArticle() { //mail for successfull post emailSender.SendEmail(); } }
- C#.net
- 11k بازدید
- 3 تشکر