Sobes.tech
Middle — Middle+

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.