Dependency Injection, 의존성 주입..
이름이 너무 무섭게 생겨서 공부하기 앞서 겁부터 먹었지만.. 객체 지향언어를 공부했다면, 너무나 당연했던 내용이였다.
하지만 나처럼 새로운 용어 공포증이 있는 분들을 위해 정리해 보았다.
<aside> 🧑🏻💻 의존성 주입은 Swift에서만 등장하는 용어는 아니다. 거의 모든 객체 지향 프로그래밍 언어에서 찾아볼 수 있지만, 이번 포스팅은 Swift예제로 구성되어 있다.
</aside>
의존성이란?
객체 지향 프로그래밍에서 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 객체도 영향을 받을 수 있다.
의존성을 가지는 코드가 많아진다면, 재활용성이 떨어지고 매번 의존성을 가지는 객체들을 함께 수정해 주어야 한다는 문제가 발생한다.