의존성 주입(Dependency Injection)이란?
- 객체 지향 프로그래밍에서 사용되는 설계 패턴 중 하나
- 객체가 직접 의존하는 객체를 생성하거나 관리하는 것이 아니라 외부에서 전달 받는 방식
- A 객체가 B 객체를 사용할 때, A가 B에 의존한다라고 표현
의존성 주입 사용 전
class User {
placeOrder() {
const order = new Order();
order.pay();
}
}
class Order {
pay() {
}
}
const user = new User();
user.placeOrder();
→ 코드가 간결하나 Order를 수정하려면 User도 함께 수정해야 함
의존성 주입 사용 후
class User{
constructor(order: Order) {
this.order = order;
}
placeOrder() {
this.order.pay();
}
}
class Order {
pay() {
}
}
const order = new Order();
const user = new User(order);
user.placeOrder();
→ Order에 수정이 필요할 때 User의 수정 없이도 쉽게 대응 가능
의존성 주입의 장단점
- 장점
- 객체 간 결합도 감소
- 관심사 분리
- 의존 대상이 되는 객체를 쉽게 변경할 수 있기 때문에 유지보수가 쉽고 재사용성이 높음
- 의존성을 주입받기 때문에 테스트 시 가짜 객체를 주입하여 쉽게 테스트 가능
- 단점
- 의존성 주입을 이해하고 적용하는 데 시간이 걸리며 코드의 가독성이 저하될 수 있음
'study > 소프트웨어 공학' 카테고리의 다른 글
DI와 DIP (0) | 2024.05.30 |
---|---|
의존성 역전 원칙 (DIP) (0) | 2024.05.16 |
단위 테스트의 FIRST 원칙 (0) | 2024.04.16 |
소프트웨어 개발 3대 원칙: KISS, YAGNI, DRY (0) | 2023.12.08 |
의존성이란? (0) | 2023.11.06 |