Sobes.tech
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.