DI와 IOC란?

song yuheon·2023년 10월 16일
0

CS Study

목록 보기
17/50
post-thumbnail

DI (의존성 주입)

  • 객체지향 프로그래밍에서 의존성 주입은 특정한 클래스가 다른 클래스의 의존성을 외부에서 주입받는 기법을 말한다.

  • DI를 사용하면 클래스 내부에서 새로운 객체를 직접 생성하는 대신 외부에서 필요한 객체를 받아와서 사용한다.

  • 이를 통해 모듈 간의 결합도를 낮추고, 코드의 재사용성과 테스트 용이성을 향상시킬 수 있다.

    즉 의존성 주입 ( DI )는 객체의 특정 기능이나 서비스를 외부에서 받아와서 사용하는 방식이다.

IoC (제어의 역전)

  • IoC는 프로그램의 제어 흐름 구조가 전통적인 순차적 제어 흐름에서 벗어나 독립적인 모듈들이 중앙된 제어 코드 대신 사용자의 코드를 제어하게 되는 디자인 패턴을 의미한다.
  • 쉽게 말하면, 프로그램의 흐름을 직접 제어하는 것이 아닌, 프레임워크나 라이브러리 등 외부 요소에게 제어를 위임하는 것이다.
  • DI는 IoC의 한 형태로 볼 수 있습니다. IoC의 핵심 목적은 모듈 간의 결합도를 낮추는 것이며, DI는 그 방법 중 하나이다.

전통적인 제어흐름이란?

프로그램 내에서 객체나 컴포넌트를 직접 생성하고 그 흐름을 개발자가 직접 제어한다.
객체의 생성, 생명주기, 의존성 모든 것을 개발자가 코드로 직접 관리하는 것이 전통적인 제어 흐름의 특징이다.

모듈간의 결합도를 낮추는 이유

  1. 유지보수성 향상
    결합도가 낮은 모듈은 다른 모듈의 변경에 덜 민감하므로 하나의 모듈을 수정할 때 다른 모듈에 영향을 주는 확률이 줄어든다.
    이는 유지보수 과정을 간소화하고 비용을 절감하는 데 도움이 된다.

  2. 재사용성 향상
    결합도가 낮은 모듈은 다른 환경이나 다른 프로젝트에서도 쉽게 재사용될 수 있다.
    이는 개발 비용과 시간을 절약하는 데 도움이 된다.

  3. 테스트 용이성
    각 모듈이 독립적으로 동작하면 해당 모듈만을 대상으로 테스트를 진행할 수 있다.
    이렇게 되면 단위 테스트가 더 간편하고 효율적으로 진행된다.

  4. 유연성
    결합도가 낮으면 기능의 변경이나 추가가 필요할 때 해당 모듈만 수정하거나 새로운 모듈을 추가하기 쉽다.
    이는 시스템의 확장성과 유연성을 향상시킨다.

  5. 이해하기 쉬움
    각 모듈이 독립적으로 동작하고, 모듈 간의 의존성이 줄어들면 시스템 전체를 이해하기가 더 쉽다.

  6. 오류의 파급 효과 감소
    한 모듈에서 발생하는 오류가 다른 모듈로 쉽게 전파되지 않게 된다.
    이는 시스템의 안정성을 향상시키는 데 도움이 된다.

즉 DI는 객체의 의존성을 외부에서 주입받는 기법이며, Io*는 프로그램의 제어를 외부 요소에게 위임하여 코드의 결합도를 낮추는 디자인 패턴이다.

profile
backend_Devloper

0개의 댓글