java
[Java] Design pattern 클래스의 약한 결합, 강한 결합의 이해
tonirr
2020. 3. 22. 12:56
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