본문 바로가기
Spring 프레임워크/메모

의존 관계와 포함 관계

by Hwanii_ 2023. 8. 5.
728x90

포함 관계 :

한 클래스가 다른 클래스를 내부에 포함 하는 경우를 의미.

== 컴포지션

 

즉, 하나의 클래스가 다른 클래스의 인스턴스를 멤버 변수로 가지고 있는 경우를 의미 한다.

 

참고 : 

https://hwanii96.tistory.com/134

 

클래스 간의 관계 - 포함관계

 

hwanii96.tistory.com

 

의존 관계 :

한 클래스가 다른 클래스에 의존 하는 경우를 의미.

 

한 클래스가 다른 클래스의 멤버 (멤버변수 + 메서드) 를 사용 할 때 !

"의존 관계가 형성 된다" 고 할 수 있다.

 

즉, 의존 관계는 객체 간의 연결을 나타낸다.

 

의존 주입과 객체화 :

의존 주입 (DI / Dependenct Injection) :

객체 간의 의존 관계를 느슨 하게 만들기 위한 방법중 하나 이다.

 

객체가 직접 의존하는 객체를 생성 하는 대신에,

외부에서 해당 객체를 생성하고 주입 해주는 방식 이다.

 

>> IoC (Inversion of Control / 제어의 역행)

 

이를 통해 객체 간의 결합도를 낮추고 유연성을 높일 수 있다.

 

느슨한 결합 : (Loose Coupling)

의존 주입을 통해 객체 간의 의존 관계를 설정하면,

코드의 변경이나 유지 보수 시에, 한 객체의 변화가 다른 객체에,

큰 영향을 미치지 않도록 만드는 것을 의미.

 

이로써, 코드 변경의 범위를 최소화 하고, 재사용성을 높이게 된다.

 

 

 

[ 정리 ]

 

포함 관계 :

1) 클래스간의 결합도 증가.

2) 의존성이 높아지므로, 클래스간의 영향을 미침.

3) 객체 생성을 직접 처리.

4) 유지 보수 불리

5) 코드의 재사용성 감소. (낮은 확장성)

 

의존 주입 :

1) 클래스간의 결합도 감소.

2) 의존성이 낮아지므로, 클래스간의 영향을 덜 미치게 됨.

3) 객체 생성을 직접 처리 하지 않음.

(외부의 Spring 프레임워크 에게 맡김)

4) 유지 보수 유리.

5) 코드의 재사용성 향상. (높은 확장성)

 

 

 

[ 참고 ]

 

어? 자바 공부 할 때, 포함 관계의 특징으로,

1) 유지 보수 용이

2) 재사용성 증가

 

라고 공부 했었는데,

의존 주입 개념을 공부하니까,

포함관계 개념은 완전 안좋아 보이네 ???

 

는 아니고,

 

관점에 따른 차이이다.

 

의존 주입과 포함 관계는,

상황과 설계 목표에 따라 선택되기 때문에,

어떤 측면을 강조하느냐에 따라,

즉, 상황마다 다 다르기 때문에,

이럴 때는, 포함 관계도 좋은데요 라고 할 수 있고,

이럴 때는, 포함 관계는 안좋은데요 라고 할 수 있는 느낌이다.

 

분명히,

 

포함 관계도 유지 보수 관점 이나, 재사용성 관점에서 유리한 경우가 있기 때문 이다.

 

재사용성 관점 :

포함 관계는 클래스 간의 높은 결합도를 가지지만,

특정 클래스를 다른 클래스의 일부로 사용함으로써,

해당 클래스의 기능을 재사용 할 수 있다.

이는, 클래스를 조립해서, 새로운 클래스를 만들거나,

기능을 조합하여 다양한 상황에 재사용할 수 있는 장점으로 이어질 수 있다.

 

유지 보수 관점 :

포함 관계에서는 클래스 간의 강한 의존성을 가지기 때문에,

하나의 클래스를 수정하면 관련된 다른 클래스도 영향을 받을 수 있게 된다.

그래도, 여러개의 클래스를 조합한 상황이므로,

즉, 각 클래스는 독립적인 역할을 담당하므로,

특정 기능의 변경 또는 유지 보수가 필요한 경우,

해당 클래스만 수정 하면 된다.

 

 

 

반응형