Ako sa v Clean Architecture uplatňuje princíp inverzie závislostí na rozdelenie zodpovedností medzi vrstvami?
sobes.tech AI
Odpoveď od AI
V čistej architektúre sa princíp závislostnej inverzie (Dependency Inversion Principle) aplikuje na rozdelenie zodpovednosti medzi vrstvami nasledovne:
-
Moduly vysokého levelu (napríklad obchodná logika) nezávisia od modulov nízkeho levelu (napríklad implementácie prístupu k dátam alebo UI), ale obe závisia od abstrakcií (rozhraní).
-
Abstrakcie sú definované vo vyšších vrstvách (napríklad v doménovej vrstve), a implementácie týchto rozhraní sa nachádzajú v nižších vrstvách (napríklad v infraštruktúre).
-
To umožňuje, aby obchodná logika bola nezávislá od detailov implementácie, čo uľahčuje testovanie, údržbu a rozširovanie.
Príklad: v doménovej vrstve sa definuje rozhranie repository:
interface UserRepository {
fun getUser(id: String): User
}
V vrstve dát sa implementuje toto rozhranie:
class UserRepositoryImpl : UserRepository {
override fun getUser(id: String): User {
// implementácia prístupu k databáze
}
}
Obchodná logika závisí iba od rozhrania UserRepository, a konkrétna implementácia je injektovaná cez konštruktor alebo DI kontajner. Týmto spôsobom sú vrstvy prepojené cez abstrakcie, nie priamo.