TGViewer
برنامه نویسی برنامه نویسی @rezadolati01 · 5.35K subscribers
Post #4691 301
🌐 تزریق وابستگی (Dependency Injection) به زبان ساده


🔸 وقتی کلاس‌ها یا ماژول‌ها مستقیماً به همدیگر وابسته باشند (Tight Coupling)، تست کردن و تغییر دادن کد عذاب‌آور می‌شود. اصول Dependency Injection (DI) یعنی شیء‌های مورد نیاز را از بیرون به کلاس تزریق کنیم، نه اینکه کلاس خودش آن‌ها را بسازد.

# ❌ روش بد و سخت برای تست (وابستگی سخت‌محور)
class MySQLDatabase:

def connect(self):
return "Connected to MySQL"


class UserService:

def __init__(self):
self.db = MySQLDatabase() # وابستگی درون‌کلاسی


# ✅ روش صحیح با Dependency Injection
class PostgreSQLDatabase:

def connect(self):
return "Connected to PostgreSQL"


class UserServiceDI:

def __init__(self, db_driver):
self.db = db_driver # وابستگی تزریق می‌شود (هر دیتابیسی می‌تواند باشد)

def get_user_data(self):
return self.db.connect()


# تزریق وابستگی هنگام ساخت نمونه
postgres_db = PostgreSQLDatabase()
service = UserServiceDI(db_driver=postgres_db)
print(service.get_user_data())

🆔 @rezadolati01
More from @rezadolati01
  1. Oct 13, 2026🌐 دانستنی فنی 🔸 عدد ۵۰۰,۰۰۰ دلار برای اصلاح یک خط کد دیتابیس! 🔸 آیا می‌دانستید در سیستم…
  2. Oct 13, 2026🌐 خروجی دقیق قطعه کد زیر در محیط استاندارد مرورگر/Node.js چیست؟ async function test() { c…
  3. Oct 13, 2026🌐 آمار رسمی Stack Overflow و GitHub از وضعیت هوش مصنوعی در سال جاری: 🔸طبق گزارش رسمی پیم…
  4. Oct 13, 2026🌐 ۴ ابزار ضروری و رایگان که کارتون رو چند برابر سریع‌تر می‌کنه: 🔹 1. Ray.so کدهاتون رو ب…
  5. Oct 13, 2026🌐 بهینه‌سازی و کدهای خواناتر در پایتون با Walrus Operator (:=) 🔸 آشنایی با Walrus Operat…
  6. Oct 11, 2026🌐 چرا جستجو در دیتابیس بدون Index کند است؟ (Sequential Scan) 🔸 ​وقتی جدولی در دیتابیس (م…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →