Junior — Middle
Který princip SOLID předpokládá závislost na abstrakcích, nikoliv na konkrétních implementacích?
sobes.tech AI
Odpověď od AI
Princip SOLID, který předpokládá závislost na abstrakcích místo na konkrétních implementacích, se nazývá Princip inverze závislostí (Dependency Inversion Principle). Říká, že:
- Moduly vyšší úrovně by neměly záviset na modulech nižší úrovně. Oba by měly záviset na abstrakcích.
- Abstrakce by neměly záviset na detailech. Detaily by měly záviset na abstrakcích.
Příklad v Pythonu:
from abc import ABC, abstractmethod
class Database(ABC):
@abstractmethod
def save(self, data):
pass
class MySQLDatabase(Database):
def save(self, data):
print(f"Ukládání {data} do 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('uživatelská data')
Zde závisí Application na abstrakci Database, nikoliv na konkrétní implementaci MySQLDatabase.