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.