Sobes.tech
Junior — Middle
100

Оё метавонед асосии идеяи принсипи ислоҳоти вобастагиро шарҳ диҳед ва чӣ гуна дар таҳияи нармафзор истифода мешавад?

Ҷавоб аз AI

sobes.tech AI

Принцип инверсии зависимостей (Dependency Inversion Principle) заключается в том, что:

  • Модули высокого уровня не должны зависеть от модулей низкого уровня напрямую.
  • Оба типа модулей должны зависеть от абстракций (например, интерфейсов).
  • Абстракции не должны зависеть от деталей, а детали должны зависеть от абстракций.

Это позволяет снизить связанность компонентов и повысить гибкость и тестируемость кода.

Пример применения в Python:

from abc import ABC, abstractmethod

class Database(ABC):
    @abstractmethod
    def save(self, data):
        pass

class MySQLDatabase(Database):
    def save(self, data):
        print(f"Saving {data} to MySQL")

class UserService:
    def __init__(self, db: Database):
        self.db = db

    def create_user(self, user_data):
        self.db.save(user_data)

# Использование
mysql_db = MySQLDatabase()
service = UserService(mysql_db)
service.create_user({'name': 'Alice'})

Здесь UserService зависит от абстракции Database, а не от конкретной реализации MySQLDatabase, что облегчает замену базы данных и тестирование.