Кіріспе

Бағдарламалық жасақтама объектіге бағытталған жобалау әдістемесі. Объектіге бағытталған жобалауда тәуелділік инверсиясы принципі – бұл байланысы төмен бағдарламалық модульдер үшін арнайы әдістеме. Бұл принципті қолданғанда, жоғары деңгейдегі, саясатты белгілейтін модульдерден төмен деңгейдегі, тәуелділік модульдеріне орнатылған дәстүрлі тәуелділік қатынастары кері қайтылып, жоғары деңгейдегі модульдерді төмен деңгейдегі модульдің іске асыру егжей-тегжейлерінен тәуелсіз етеді. Принцип былай тұжырымдайды:

Жоғары және төмен деңгейдегі нысандардың барлығы бір абстракцияға тәуелді болуы керек. Бұл жобалау принципі кейбір адамдардың объектіге бағытталған бағдарламалау туралы ойлау жолын өзгертеді. Принциптің А және В тармақтарының мәні – жоғары деңгейдегі модуль мен төмен деңгейдегі модульдің өзара әрекеттесуін жобалау кезінде, олардың арасындағы өзара әрекеттесу абстрактілі түрде қарастырылуы керек. Бұл тек жоғары деңгейдегі модульдің дизайнына ғана емес, төмен деңгейдегі модульге де әсер етеді: төмен деңгейдегі модуль өзара әрекеттесуді ескере отырып жобаланып, оның қолданыс интерфейсін өзгерту қажет болуы мүмкін. Көп жағдайда, өзара әрекеттесуді абстрактілі ұғым ретінде қарастыру компоненттердің байланысын қосымша кодтау үлгілерін қолданбай азайтуға мүмкіндік береді, нәтижесінде жеңіл және іске асыруға аз тәуелді өзара әрекеттесу схемасы пайда болады. Егер екі модуль арасындағы анықталған абстрактілі өзара әрекеттесу схемасы жалпыланған болса және жалпылау мағыналы болса, бұл жобалау принципі келесі тәуелділік инверсиясы кодтау үлгісіне алып келеді.

Дәстүрлі қабаттар үлгісі

Дәстүрлі қолданба архитектурасында төменгі деңгейдегі компоненттер (мысалы, Пайдалылық қабаты) жоғары деңгейдегі компоненттер (мысалы, Саясат қабаты) пайдалану үшін жасалады, бұл күрделі жүйелерді құруға мүмкіндік береді. Мұндай құрамда жоғары деңгейдегі компоненттер белгілі бір міндетті орындау үшін төменгі деңгейдегі компоненттерге тікелей тәуелді болады. Төменгі деңгейдегі компоненттерге тәуелділік жоғары деңгейдегі компоненттерді қайта пайдалану мүмкіндіктерін шектейді. Ал тәуелділік инъекциясы жоғары деңгейдегі компонентке қажетті төменгі деңгейдегі компоненттің нақты іске асырылуын жүктеуді жеңілдету үшін қолданылады.

Тарих

Тәуелділік инверсиясы принципі Роберт К. Мартинмен ұсынылып, бірнеше жариялымдарда, оның ішінде "Объектіге бағытталған дизайн сапасының өлшемдері: тәуелділіктерді талдау" мақаласында, 1996 жылғы маусымдағы C++ баяндамасында жарияланған "Тәуелділік инверсиясы принципі" атты мақаласында, сондай-ақ "Agile Software Development, Principles, Patterns, and Practices" және "Agile Principles, Patterns, and Practices in C#" кітаптарында сипатталған.