Sobes.tech
Middle — Middle+

Ինչպես է կիրառվում կախվածությունների հակադարձման սկզբունքը Clean Architecture-ում՝ պատասխանատվությունները բաժանելու համար շերտերի միջև?

sobes.tech AI

Պատասխան AI-ից

Մաքուր ճարտարապետությունում, կախվածության հակադարձման սկզբունքը (Dependency Inversion Principle) կիրառվում է պատասխանատվությունը շերտերի միջև բաժանելու համար հետևյալ կերպ.

  • Բարձր մակարդակի մոդուլները (օրինակ, բիզնես տրամաբանությունը) կախված չեն ցածր մակարդակի մոդուլներից (օրինակ, տվյալների մուտքի կամ UI իրականացման), այլ երկուսն էլ կախված են աբստրակցիաներից (ինտերֆեյսներից):

  • Աբստրակցիաները սահմանվում են բարձր մակարդակի շերտերում (օրինակ, դոմենային շերտում), իսկ այդ ինտերֆեյսների իրականացումները գտնվում են ստորին շերտերում (օրինակ, ենթակառուցվածքում):

  • Սա թույլ է տալիս բիզնես տրամաբանությունը լինել անկախ իրականացման մանրամասներից, ինչը հեշտացնում է փորձարկումը, սպասարկումը և ընդլայնումը:

Օրինակ՝ դոմենային շերտում սահմանվում է պահեստարանի ինտերֆեյս:

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

Տվյալների շերտում այս ինտերֆեյսը իրականացնում է:

class UserRepositoryImpl : UserRepository {
    override fun getUser(id: String): User {
        // տվյալների բազայի մուտքի իրականացում
    }
}

Բիզնես տրամաբանությունը կախված է միայն UserRepository ինտերֆեյսից, իսկ կոնկրետ իրականացումը մուտքագրվում է կոնստրուկտորով կամ DI կոնտեյներով: Այսպիսով, շերտերը կապված են աբստրակցիաների միջոցով, ոչ ուղղակի։