의존성 주입 객체가 서로 의존하는 관계가 되도록 의존성을 주입하는 것. 객체지향에서 의존성이란 하나의 객체가 어떠한 다른 객체를 사용하고 있음을 의미한다.
의존 객체 주입 패턴을 사용하는 이유는 1:1의 강한 커플링 관계(결합도가 높은)를 루즈 커플링 관계(느슨한 결합)가 되도록 구현하는 것이다.
강한 커플링 관계를 맺게 되면 모듈간 분리가 어렵고 코드 재사용성이 떨어진다. 유지보수가 어렵다.
그렇다고 아얘 관계를 맺지 않으면 사용할 수 없으니 느슨한 관계를 맺게 만들어주어야 한다.
대표적으로 Spring 프레임워크에서 IOC 컨테이너가 이 역할을 하는데
기존 개발자가 객체를 결정 하고 생성 -> 의존성 객체 생성 -> 객체 내 메소드 호출로 모든 작업을 사용자가 제어하는 구조였다면 IOC컨테이너가 처리를 하는데 객체는 자기가 사용할 객체를 선택하거나 생성하지 않고 자신이 어디서 생성되고 사용되는지 모른다. 자기의 모든 권한을 다른 대상에 위임하여 제어권한을 받은 특별한 객체에 의해 결정되고 만들어진다.
클래스간 종속관계 의존도를 낮추기 위해서는 Interface 기반의 코딩이 이루어져야 하고 루즈 커플링 된 객체를 사용할 때는 constructor Injection 하거나 setter Injection으로 사용 인스턴스를 주입한다.
'Effective Java > 키워드' 카테고리의 다른 글
오토박싱 오토언박싱 (AutoBoxing AutoUnBoxing) (0) | 2023.01.06 |
---|---|
정규표현식 (Regular Expression) (0) | 2023.01.06 |
정적 유틸리티 클래스 (Static Utility Class) (0) | 2023.01.06 |
직렬화 역직렬화 (Siriallizable Desirializable) (0) | 2023.01.04 |
공변 반환 타입 (Covariant Return Type) (0) | 2023.01.04 |