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 კონტეინერით. ამ გზით, ფენები დაკავშირებულია აბსტრაქციების მეშვეობით, არა პირდაპირ.