티스토리 뷰

Dependency Injection (DI, 의존성 주입)

Dependency(의존성, 의존관계)

A 객체가 B객체를 활용해 로직을 구현하는 경우 A 객체는 B 객체에 의존관계를 가진다고 한다.
예를 들어 Car가 Random 객체를 사용해 기능을 구현한다면 Car는 Random에 의존관계를 가진다.

Injection(주입)

객체 간의 의존관계를 의존관계를 가지는 객체 내부에서 결정하지 않고 외부에서 결정한다.
예를 들어 Car가 Random 객체의 의존관계를 없애기 위해 MoveStrategy를 추가했다면 이에 대한 의존관계를 외부에서 결정한다.

Sample Code

백문이불여일견, 직접 브랜치가서 코드 보자

DI전엔 도메인 객체의 랜덤성으로 테스트가 불가능하다. 동시에 이 테스트 불가성이 상위객체까지 전염되어, 모두 테스트 하기 힘들어진다.

이때, 랜덤성을 주입해 최대한 상위로 끌어올려 테스트 가능한 구조로 만든다.

참고

https://os94.tistory.com/136
KSUG 스프링캠프 2019 발표자료 - "무엇을 테스트할 것인가, 어떻게 테스트할 것인가"
How to explain dependency injection to a 5-year-old?

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함