Sobes.tech
Middle — Middle+

Jak je v Clean Architecture aplikován princip inverze závislostí pro oddělení odpovědností mezi vrstvami?

sobes.tech AI

Odpověď od AI

V čisté architektuře se princip závislostní inverze (Dependency Inversion Principle) používá k rozdělení odpovědnosti mezi vrstvy následujícím způsobem:

  • Vyšší vrstvy (například obchodní logika) nezávisí na nižších vrstvách (například implementace přístupu k datům nebo UI), ale obě závisí na abstrakcích (rozhraních).

  • Abstrakce jsou definovány ve vyšších vrstvách (například v doménové vrstvě) a implementace těchto rozhraní se nachází ve spodních vrstvách (například v infrastruktuře).

  • To umožňuje, aby obchodní logika byla nezávislá na detailech implementace, což usnadňuje testování, údržbu a rozšiřování.

Příklad: v doménové vrstvě je definováno rozhraní repozitáře:

interface UserRepository {
    fun getUser(id: String): User
}

V datové vrstvě je toto rozhraní implementováno:

class UserRepositoryImpl : UserRepository {
    override fun getUser(id: String): User {
        // implementace přístupu k databázi
    }
}

Obchodní logika závisí pouze na rozhraní UserRepository, a konkrétní implementace je injektována přes konstruktor nebo DI kontejner. Tímto způsobem jsou vrstvy propojeny přes abstrakce, nikoli přímo.