티스토리 뷰
DI (Dependency Injection)
- 객체를 사용하는 두 가지 방법
- A객체가 B/C객체를 직접 생성한다.
- B/C의 기능에 의존한다.
- 직접 생성하는 경우 생성부터 메모리관리까지 해당 객체의 라이프사이클을 개발자가 모두 관리해야 하므로 강한 결합이 됨
- B/C객체가 외부에 생성되어 A객체에 주입된다.
- B/C의 기능이 필요해 B/C를 가지고 있는 외부의 누군가에게 요청한다.
- 이미 누군가가 생성한 객체를 주입받으면 사용만하면 되므로 약한 결합이 됨
- 개발자가 관리할 것이 적음
- A객체가 B/C객체를 직접 생성한다.
public class UnderstandDI {
public static void main(String[] args) {
Date date = new Date();
System.out.println(date);
}
public static void getDate(Date d) {
Date date = d;
System.out.println(date);
}
public static void memberUse1() {
// 강한 결합 : 직접 생성
Member m1 = new Member();
}
public static void memberUse2(Member m) {
// 약한 결합: 생성된 것을 주입 받음 - 의존 주입 (Dependency Injection)
Member m2 = m;
}
}
// Member를 사용한다 --> Member의 기능에 의존한다 라는 의미
class Member{
String name;
String nickname;
private Member() {}
}
해당 코드에서 Member 클래스의 생성자를 private 으로 바꾸면 강한결합에서는 오류가 나지만 약한결합에서는 오류가 나지 않는다.
- 출처
- 인프런 - 디자인패턴 with Java
- https://www.inflearn.com/course/Design-pattern-java
'java' 카테고리의 다른 글
[Java] Design Pattern 싱글턴 패턴 - Thread 사용시에 문제점 해결, 효율적인 코드 (0) | 2020.03.22 |
---|---|
[Java] Design Pattern 싱글턴 패턴 (0) | 2020.03.22 |
[Java] Java Design Pattern (0) | 2020.03.22 |
[Java] Iterator, Iterable, for-each 각각의 특징 (0) | 2020.03.16 |
[Java] Map (0) | 2020.03.15 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 동적프로그래밍
- stackframe
- BFS
- 자료구조
- 운영체제
- 이진탐색
- javascript
- 최단경로
- C
- C++
- 세마포어
- dfs
- 구조체
- 퀵정렬
- 배열
- react
- client side rendering
- 클래스
- 스텍
- 인접행렬
- 소프트웨어
- 입출력장치
- 병행프로세스
- Java
- Stack
- 인접리스트
- 교착상태
- 알고리즘
- server side rendering
- 재귀함수
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함