포함 관계 :
한 클래스가 다른 클래스를 내부에 포함 하는 경우를 의미.
== 컴포지션
즉, 하나의 클래스가 다른 클래스의 인스턴스를 멤버 변수로 가지고 있는 경우를 의미 한다.
참고 :
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) 재사용성 증가
라고 공부 했었는데,
의존 주입 개념을 공부하니까,
포함관계 개념은 완전 안좋아 보이네 ???
는 아니고,
관점에 따른 차이이다.
의존 주입과 포함 관계는,
상황과 설계 목표에 따라 선택되기 때문에,
어떤 측면을 강조하느냐에 따라,
즉, 상황마다 다 다르기 때문에,
이럴 때는, 포함 관계도 좋은데요 라고 할 수 있고,
이럴 때는, 포함 관계는 안좋은데요 라고 할 수 있는 느낌이다.
분명히,
포함 관계도 유지 보수 관점 이나, 재사용성 관점에서 유리한 경우가 있기 때문 이다.
재사용성 관점 :
포함 관계는 클래스 간의 높은 결합도를 가지지만,
특정 클래스를 다른 클래스의 일부로 사용함으로써,
해당 클래스의 기능을 재사용 할 수 있다.
이는, 클래스를 조립해서, 새로운 클래스를 만들거나,
기능을 조합하여 다양한 상황에 재사용할 수 있는 장점으로 이어질 수 있다.
유지 보수 관점 :
포함 관계에서는 클래스 간의 강한 의존성을 가지기 때문에,
하나의 클래스를 수정하면 관련된 다른 클래스도 영향을 받을 수 있게 된다.
그래도, 여러개의 클래스를 조합한 상황이므로,
즉, 각 클래스는 독립적인 역할을 담당하므로,
특정 기능의 변경 또는 유지 보수가 필요한 경우,
해당 클래스만 수정 하면 된다.
'Spring 프레임워크 > 메모' 카테고리의 다른 글
[ Spring ] redirect: 와 forward: (0) | 2023.08.07 |
---|---|
Spring 로그 분석 하기 (0) | 2023.08.06 |
MySQL에서 Oracle로 이관 하기 (MySQL to Oracle Migration) (0) | 2023.08.05 |
Spring 프레임워크 ModelAndView.java 소스 코드 (0) | 2023.08.04 |
Spring 프레임워크 Controller 파트 설계 메모 (0) | 2023.08.04 |