Dependency Injection, 의존성 주입..

이름이 너무 무섭게 생겨서 공부하기 앞서 겁부터 먹었지만.. 객체 지향언어를 공부했다면, 너무나 당연했던 내용이였다.

하지만 나처럼 새로운 용어 공포증이 있는 분들을 위해 정리해 보았다.

<aside> 🧑🏻‍💻 의존성 주입은 Swift에서만 등장하는 용어는 아니다. 거의 모든 객체 지향 프로그래밍 언어에서 찾아볼 수 있지만, 이번 포스팅은 Swift예제로 구성되어 있다.

</aside>

Dependency,

의존성이란?


객체 지향 프로그래밍에서 Dependency, 의존성은 서로 다른 객체 사이에 의존 관계가 있다는 것을 말한다. 즉, 의존하는 객체가 수정되면, 다른 객체도 영향을 받는다는 것이다.

예를 들어 아래의 코드를 보자.

import UIKit

struct Eat {
    func coffee() {
        print("아메리카노")
    }

    func meal() {
        print("피자")
    }
}

struct Person {
    var todayEat: Eat
    
    func coffee() {
        todayEat.coffee()
    }
    
    func meal() {
        todayEat.meal()
    }
}

Person객체는 Eat객체를 인스턴스로 사용하고 있으므로, Eat객체에 의존성이 생긴다. 만약 이때, Eat 객체에 중요한 수정이나 오류가 발생한다면, Person 객체도 영향을 받을 수 있다.

의존성을 가지는 코드가 많아진다면, 재활용성이 떨어지고 매번 의존성을 가지는 객체들을 함께 수정해 주어야 한다는 문제가 발생한다.