[OOP] 결합도의 개념, 결합도 낮추기,의존성 주입(DI)
2026.07.14. 14:13
A 클래스가 B 클래스에 의존하는 상황에서
B의 코드를 변경했을 때 A 클래스의 코드도 변경해야한다 -> 결합도 높음.
B의 코드를 변경했을 때 A 클래스의 코드도 변경하지 않아도 된다. -> 결합도 낮음.
** 의존성이 있다고 해서 나쁜 것은 아님.
A 클래스에서 B 클래스를 새로 생성하는 코드
public class A {
private B b;
public A() {
this.b = new B();
}
}-->
public class A {
private B b;
public A(B b) {
this.b = b;
}
}이렇게 수정하면 B 클래스를 수정하더라도 A 클래스를 수정할 필요 없음.
** 이런 방식으로 주입을 하는 것을 DI(의존성 주입이라고 함)
DI의 장단점
장점
결합도 낮춤
나중에 B의 생성자가 바뀌어도 A를 바꿀 필요가 없음
B가 바뀌면 이 클래스만 따로 컴파일해서 배포 가능 -> 다만 요새는 잘 안함.
단점
편의성 - 일일히 A 클래스를 B 클래스에서 만들어야함.
프로그래머의 원래 의도를 잘 보여주는 클래스 : 원 의도는 A 클래스를 만들면 B 클래스를 자동으로 만들어야하는 것일 수도 있음.
--> 결과적으로 어떤 방식이 무조건 옳다고 할 수 없음.