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.