오늘은, DI와 DIP 의존성 주입에 대해 알아보고 정리하고자 한다.
해당 글은 인프런:객체지향 프로그래밍 기초 강의와 검색 및 기존 알고있던 지식을 기반으로 작성하였다.
두 가지 전부 의존성 주입에 관련된 이야기지만 이 내용의 핵심은 어떻게 의존성을 주입하는가? 가 포인트인것 같았다.
DI ( Dependency - injection )
의존성 주입(Dependency Injection, DI)으로서, 외부에서 의존 객체를 주입함을 의미한다.
의존성 주입(DI)의 의도는 객체의 생성과 사용의 관심을 분리하는 것 이는 가독성과 코드 재사용성을 높여준다.
의존성 주입은 다음과 같은 문제를 해결한다고 한다.
마틴 파올러는 DI의 관한 의존성 주입 패턴 세 가지를 제안하였다.
DI 장점은 다음과 같다.
DIP ( Dependency Inversion principle )
의존관계 역전 원칙 (DIP)는 소프트웨어 모듈들을 분리하는 특정 형식을 지칭한다.
해당 원칙은 상위 계층(정책 결정)이 하위 계층(세부 사항)에 의존하는 전통적인 의존관계를 반전(역전)시킴으로써 상위 계층이 하위 계층의 구현으로부터 독립되게 할 수 있다는걸 의미한다.
즉, 해당 원칙은 상위 계층이 하위계층에 의존하면안되고, 저수준모듈은 고수준 모듈에서 정의한 추상 타입에 의존해야 한다.
그럼 이러한 DIP는 어떠한 장점을 가지고 있을까?
결론
두 의존성 주입의 경우 DI는 위에서 아래, DIP는 상위와 하위 두 가지로 나눠 하위가 상위 계층으로 의존성을 주입함임을 느낄 수 있었다.
회사든 이후 프로젝트 할당을 받았을 때 해당 기능에 대한 상위, 하위에 대한 분류를 한 후 조금 더 유연한 설계를 해야 함을 다시 한번 느낄 수 있던 계기였다.
Throttling과 debounce에 대해 알아보자 (0) | 2022.12.11 |
---|---|
[Design Pattern] Strategy Pattern 전략패턴에 대해 알아보자! (0) | 2022.10.30 |
[SpringBoot - 인프런] Batch Meta Data (0) | 2022.08.22 |
[SpringBoot - 인프런] EnableBatchProcessing (0) | 2022.08.20 |
[인프런/개념] 스프링 배치 : 아키텍처 (0) | 2022.08.12 |