티스토리 뷰
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?
'General, Java' 카테고리의 다른 글
DTO의 사용범위 / Entity와의 변환에 대한 논의 (0) | 2019.09.14 |
---|---|
Java) toString()을 override하는 10가지 팁 (번역/요약) (0) | 2019.09.14 |
Java) Shallow Copy vs Deep Copy (얕은/깊은 복사), unmodifiableList의 값 변화 관찰 (0) | 2019.09.14 |
원본값을 안전하게 보호하자 by unmodifiableList & Deep Copy & VO (0) | 2019.09.14 |
Java) Enum Class (0) | 2019.09.14 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
TAG
- webhacking.kr
- JPA
- reversing
- 웹해킹
- Java
- 리버싱
- 해외여행
- dfs
- Android
- javascript
- OneToMany
- graph
- Data Structure
- 개발자
- 프로그래머스
- mysql
- git
- 회고
- bfs
- 우아한 테크코스
- brute-force
- socket
- FRAGMENT
- Algorithm
- Stack
- queue
- sort
- Android Studio
- Vo
- C
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함