NINJA_LEARN_IR Telegram 376
ـ Dependency Injection چیه؟ 🤔

امروز میخوایم بررسی کنیم Dependency Injection یا همون تزریق وابستگی چیه
خب Dependency injection یه مفهومی توی برنامه‌نویسی شی‌گراست که به ساده‌ترین شکل می‌شه گفت برای جداسازی وابستگی‌ها بین کلاس‌ها استفاده می‌شه. یعنی چی؟ یعنی به جای اینکه هر کلاس خودش مستقلاً وابستگی‌های مورد نیازش رو بسازه، این وابستگی‌ها از بیرون بهش تزریق می‌شه. این کار باعث می‌شه کد ما تمیزتر، انعطاف‌پذیرتر و قابل تست‌تر بشه.

چرا مهمه؟ 🤨

فرض کن یه کلاس داری که برای کارکردش نیاز به یه سری سرویس‌های دیگه داره. مثلاً کلاسی که مسئول لاگین کاربره، نیاز به سرویس دیتابیس داره. حالا اگه این سرویس رو خود کلاس بسازه، دیگه وابستگی محکمی بین این دو تا وجود داره. یعنی هر وقت بخوای دیتابیس رو عوض کنی، باید بری توی این کلاس دست ببری. اما اگه از Dependency Injection استفاده کنی، می‌تونی هر وقت خواستی به این کلاس هر دیتابیسی که دوست داری تزریق کنی، بدون اینکه نیاز باشه توی کدش تغییری بدی.

یه مثال ساده 🤓

فرض کن کلاس زیر رو داری که برای ارسال پیام نیاز به یه سرویس پیام‌رسان داره:

class NotificationService:
def __init__(self):
self.sender = EmailSender()

def send(self, message):
self.sender.send(message)


اینجا کلاس NotificationService مستقیم وابسته به EmailSender هست، یعنی اگه بعداً بخوای از یه روش دیگه برای ارسال پیام (مثلاً SMSSender) استفاده کنی، باید بری کد این کلاس رو تغییر بدی. این باعث می‌شه کدات به هم گره بخورن و انعطاف‌پذیری کم بشه.

حالا با استفاده از Dependency Injection اینجوری می‌نویسیمش:

class NotificationService:
def __init__(self, sender):
self.sender = sender

def send(self, message):
self.sender.send(message)


تو این حالت، sender (که می‌تونه EmailSender، SMSSender یا هر چیز دیگه‌ای باشه) از بیرون به NotificationService تزریق می‌شه. حالا اگه بخوای نوع ارسال پیام رو تغییر بدی، فقط کافیه یه شیء جدید بهش تزریق کنی:

email_sender = EmailSender()
sms_sender = SMSSender()

notification = NotificationService(email_sender) # استفاده از ایمیل
notification.send("Hello via Email!")

notification_sms = NotificationService(sms_sender) # استفاده از SMS
notification_sms.send("Hello via SMS!")



مزایای Dependency Injection 📈

1⃣ قابلیت تست بیشتر: چون وابستگی‌ها از بیرون تزریق می‌شن، می‌تونی راحت‌تر mock کنی و تست بنویسی.

2⃣ انعطاف‌پذیری بیشتر: راحت می‌تونی وابستگی‌های مختلف رو جایگزین کنی بدون اینکه توی کلاس تغییر بدی.

3⃣ کاهش coupling: وابستگی بین کلاس‌ها کمتر می‌شه و این باعث می‌شه کدات مستقل‌تر باشن.

جمع‌بندی 🎯

فهمیدیم که Dependency Injection بهت کمک می‌کنه که کدهای تمیزتری داشته باشی که راحت‌تر تست و اپدیت میشن. خیلی وقتا که بخوای یه اپلیکیشن بزرگ و مقیاس‌پذیر بنویسی، این الگو می‌تونه کارتو خیلی راحت‌تر کنه. پس دفعه بعد که داشتی کد می‌زدی و حس کردی یه کلاس داره زیادی به کلاس‌های دیگه وابسته می‌شه، به فکر استفاده از این روش باش 😉

ممنون میشم با ریکشن و شیر از ما حمایت کنید :) ❤️‍🔥

#programing #backend



@ninja_learn_ir
23



tgoop.com/ninja_learn_ir/376
Create:
Last Update:

ـ Dependency Injection چیه؟ 🤔

امروز میخوایم بررسی کنیم Dependency Injection یا همون تزریق وابستگی چیه
خب Dependency injection یه مفهومی توی برنامه‌نویسی شی‌گراست که به ساده‌ترین شکل می‌شه گفت برای جداسازی وابستگی‌ها بین کلاس‌ها استفاده می‌شه. یعنی چی؟ یعنی به جای اینکه هر کلاس خودش مستقلاً وابستگی‌های مورد نیازش رو بسازه، این وابستگی‌ها از بیرون بهش تزریق می‌شه. این کار باعث می‌شه کد ما تمیزتر، انعطاف‌پذیرتر و قابل تست‌تر بشه.

چرا مهمه؟ 🤨

فرض کن یه کلاس داری که برای کارکردش نیاز به یه سری سرویس‌های دیگه داره. مثلاً کلاسی که مسئول لاگین کاربره، نیاز به سرویس دیتابیس داره. حالا اگه این سرویس رو خود کلاس بسازه، دیگه وابستگی محکمی بین این دو تا وجود داره. یعنی هر وقت بخوای دیتابیس رو عوض کنی، باید بری توی این کلاس دست ببری. اما اگه از Dependency Injection استفاده کنی، می‌تونی هر وقت خواستی به این کلاس هر دیتابیسی که دوست داری تزریق کنی، بدون اینکه نیاز باشه توی کدش تغییری بدی.

یه مثال ساده 🤓

فرض کن کلاس زیر رو داری که برای ارسال پیام نیاز به یه سرویس پیام‌رسان داره:

class NotificationService:
def __init__(self):
self.sender = EmailSender()

def send(self, message):
self.sender.send(message)


اینجا کلاس NotificationService مستقیم وابسته به EmailSender هست، یعنی اگه بعداً بخوای از یه روش دیگه برای ارسال پیام (مثلاً SMSSender) استفاده کنی، باید بری کد این کلاس رو تغییر بدی. این باعث می‌شه کدات به هم گره بخورن و انعطاف‌پذیری کم بشه.

حالا با استفاده از Dependency Injection اینجوری می‌نویسیمش:

class NotificationService:
def __init__(self, sender):
self.sender = sender

def send(self, message):
self.sender.send(message)


تو این حالت، sender (که می‌تونه EmailSender، SMSSender یا هر چیز دیگه‌ای باشه) از بیرون به NotificationService تزریق می‌شه. حالا اگه بخوای نوع ارسال پیام رو تغییر بدی، فقط کافیه یه شیء جدید بهش تزریق کنی:

email_sender = EmailSender()
sms_sender = SMSSender()

notification = NotificationService(email_sender) # استفاده از ایمیل
notification.send("Hello via Email!")

notification_sms = NotificationService(sms_sender) # استفاده از SMS
notification_sms.send("Hello via SMS!")



مزایای Dependency Injection 📈

1⃣ قابلیت تست بیشتر: چون وابستگی‌ها از بیرون تزریق می‌شن، می‌تونی راحت‌تر mock کنی و تست بنویسی.

2⃣ انعطاف‌پذیری بیشتر: راحت می‌تونی وابستگی‌های مختلف رو جایگزین کنی بدون اینکه توی کلاس تغییر بدی.

3⃣ کاهش coupling: وابستگی بین کلاس‌ها کمتر می‌شه و این باعث می‌شه کدات مستقل‌تر باشن.

جمع‌بندی 🎯

فهمیدیم که Dependency Injection بهت کمک می‌کنه که کدهای تمیزتری داشته باشی که راحت‌تر تست و اپدیت میشن. خیلی وقتا که بخوای یه اپلیکیشن بزرگ و مقیاس‌پذیر بنویسی، این الگو می‌تونه کارتو خیلی راحت‌تر کنه. پس دفعه بعد که داشتی کد می‌زدی و حس کردی یه کلاس داره زیادی به کلاس‌های دیگه وابسته می‌شه، به فکر استفاده از این روش باش 😉

ممنون میشم با ریکشن و شیر از ما حمایت کنید :) ❤️‍🔥

#programing #backend



@ninja_learn_ir

BY Ninja Learn | نینجا لرن


Share with your friend now:
tgoop.com/ninja_learn_ir/376

View MORE
Open in Telegram


Telegram News

Date: |

It’s yet another bloodbath on Satoshi Street. As of press time, Bitcoin (BTC) and the broader cryptocurrency market have corrected another 10 percent amid a massive sell-off. Ethereum (EHT) is down a staggering 15 percent moving close to $1,000, down more than 42 percent on the weekly chart. Unlimited number of subscribers per channel Click “Save” ; Although some crypto traders have moved toward screaming as a coping mechanism, several mental health experts call this therapy a pseudoscience. The crypto community finds its way to engage in one or the other way and share its feelings with other fellow members. Add the logo from your device. Adjust the visible area of your image. Congratulations! Now your Telegram channel has a face Click “Save”.!
from us


Telegram Ninja Learn | نینجا لرن
FROM American