ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2023 - 08 - 30 기술면접(11)- DI, IoC
    Today I Learned/TIL 08 2023. 8. 31. 11:14

     

    DI (Dependency Injection - 의존성 주입):
    DI는 프로그램에서 여러 컴포넌트가 서로 협력하고 의존하는 상황에서 사용되는 디자인 패턴입니다. 우리 일상 생활에서도 의존성을 가지고 있는 예를 생각해보면 쉽게 이해할 수 있어요. 예를 들어, 자전거를 타려면 바퀴나 핸들 같은 부품들이 필요한데, 이런 부품들은 자전거에 주입되어야 합니다.

    프로그래밍에서도 비슷한 원리가 적용됩니다. DI는 컴포넌트들 간의 의존성을 줄이기 위해, 컴포넌트에 필요한 다른 컴포넌트를 외부에서 주입하는 방식을 말합니다. 이렇게 하면 컴포넌트들이 더 모듈화되고 유연해지며, 유지보수가 더 편리해집니다.

    IoC (Inversion of Control - 제어의 역전):
    IoC는 프로그래밍에서 컨트롤의 흐름이 바뀌는 것을 나타내는 개념입니다. 보통 프로그램의 흐름은 우리가 작성한 코드에 의해 결정되지만, IoC에서는 프레임워크나 컨테이너가 프로그램의 흐름을 결정합니다. 이것은 마치 영화의 감독이 배우들의 행동을 조정하듯이, 제어권이 바뀌는 것을 말합니다.

    IoC를 통해 컴포넌트들이 필요한 작업을 직접 관리하지 않고 외부에서 주어진 조건에 따라 동작하게 되므로, 코드가 더 모듈화되고 관리가 편리해집니다. DI와 IoC는 종종 함께 사용되어 더 효과적인 프로그램 구조를 만드는 데 도움을 줍니다.


    의존성 주입에는 세 가지 주요 스타일이 있습니다. 생성자 주입, Setter주입, 인터페이스 주입 등이 있고, DI를 사용하면 여러가지 장점이 있는데,

    1. 의존성이 줄어든다.
    의존한다는 것은 그 의존대상의 변화에 취약하다는 것이다.(대상이 변화하였을 때, 이에 맞게 수정해야함) DI로 구현하게 되었을 때, 주입받는 대상이 변하더라도 그 구현 자체를 수정할 일이 없거나 줄어들게됩니다.

    2. 재사용성이 높은 코드가 된다.
    기존에 어떤 클래스 내부에서만 사용되었던 코드를 별도로 구분하여 구현하면, 다른 클래스에서 재사용할 수가 있습니다.

    3. 모의 객체를 주입할 수 있기 때문에 단위테스트가 쉬워져, 테스트하기 좋은 코드가 됩니다.

    4. 분리되어있기 때문에 가독성이 높아집니다.

    댓글

Designed by Tistory.