study/소프트웨어 공학

의존성 주입 (DI)

836586697769 2024. 5. 16. 14:34

의존성 주입(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