티스토리 뷰

DI (Dependency Injection)

  • 객체를 사용하는 두 가지 방법
    • A객체가 B/C객체를 직접 생성한다.
      • B/C의 기능에 의존한다.
      • 직접 생성하는 경우 생성부터 메모리관리까지 해당 객체의 라이프사이클을 개발자가 모두 관리해야 하므로 강한 결합이 됨
    • B/C객체가 외부에 생성되어 A객체에 주입된다.
      • B/C의 기능이 필요해 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 으로 바꾸면 강한결합에서는 오류가 나지만 약한결합에서는 오류가 나지 않는다.

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
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
글 보관함