Sobes.tech
Junior — Middle
68

Какой принцип SOLID подразумевает зависимость от абстракций, а не от конкретных реализаций?

Answer from AI

sobes.tech AI

Принцип SOLID, который подразумевает зависимость от абстракций, а не от конкретных реализаций, называется 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 Application:
    def __init__(self, db: Database):
        self.db = db

    def store(self, data):
        self.db.save(data)

mysql_db = MySQLDatabase()
app = Application(mysql_db)
app.store('user data')

Здесь Application зависит от абстракции Database, а не от конкретной реализации MySQLDatabase.