Ինչպես է կիրառվում կախվածությունների հակադարձման սկզբունքը 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 կոնտեյներով: Այսպիսով, շերտերը կապված են աբստրակցիաների միջոցով, ոչ ուղղակի։