Menu
Menu
Posts List
  1. Swift:
    1. DI가 왜 필요할까?
    2. DI 방식
    3. 장점
    4. 단점

Dependency Injection

Swift:

의존성 주입(Dependency Injection, DI)은 객체가 직접 의존성을 생성하지 않고, 외부에서 전달받아 사용하는 디자인 패턴


DI가 왜 필요할까?

  1. 결합도 감소 (Low Coupling)
    • 클래스 내부에서 직접 의존 객체를 생성하지 않으므로, 모듈 간의 결합도가 낮아짐
  2. 유지보수 용이
    • 구현체가 바뀌어도 외부에서 주입만 해주면 되므로 코드 변경 범위가 줄어듬
  3. 테스트 용이성 (Testability)
    • 테스트 환경에서 의존 객체를 Mock 또는 Stub으로 쉽게 대체 가능

DI 방식

방식 설명 예시
생성자 주입 (Constructor Injection) 생성자를 통해 주입 init(service: ServiceProtocol)
프로퍼티 주입 (Property Injection) 프로퍼티를 통해 주입 var service: ServiceProtocol?
메서드 주입 (Method Injection) 메서드 호출 시 주입 func configure(service: ServiceProtocol)

장점

  • 코드 재사용성 증가
  • 테스트 가능성 증가 (Mock 주입 가능)
  • SOLID 원칙 중 DIP(Dependency Inversion Principle) 준수
  • 유연한 구조 설계 가능

단점

  • 설정 및 초기화 코드 증가
  • 구조가 복잡해질 수 있음
  • 의존성이 많을 경우 주입 과정이 번거로울 수 있음