🔸 وقتی کلاسها یا ماژولها مستقیماً به همدیگر وابسته باشند (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