CS 11 DI/IoC

이상인·2023년 9월 4일
0

11. DI, IoC에 대해 설명해주세요.

DI (Dependency Injection):

DI는 의존성 주입의 약자로, 객체 지향 프로그래밍에서 사용되는 디자인 패턴 중 하나입니다. DI는 클래스 간의 의존성을 외부에서 주입하는 방식을 의미합니다. 이것은 코드의 결합도를 낮추고 유지보수성을 높이는 데 도움이 됩니다.

주요 특징과 개념은 다음과 같습니다:

의존성 (Dependency): 객체 지향 프로그래밍에서 객체는 다른 객체에 의존할 수 있습니다. 이러한 의존성은 클래스 간의 관계를 형성하고 있습니다.

주입 (Injection): DI는 의존성을 주입하는 방식으로 동작합니다. 즉, 클래스가 필요로 하는 의존성(다른 객체)을 외부에서 주입받게 됩니다.

제어 역전 (Inversion of Control, IoC): DI는 제어 역전의 한 형태로 볼 수 있습니다. 일반적으로 객체의 생성과 관리는 프로그램 내에서 해당 객체를 생성하는 쪽에서 제어됩니다. 하지만 DI에서는 객체의 생성과 관리가 외부 컨테이너에 의해 제어되므로 제어의 주체가 역전되었다고 말합니다.

컨테이너 (Container): DI를 구현하는데에는 주로 컨테이너가 사용됩니다. 컨테이너는 객체의 라이프사이클을 관리하고, 의존성을 주입하며, 필요한 객체를 제공하는 역할을 합니다.

IoC (Inversion of Control):

IoC는 제어 역전의 약자로, 소프트웨어 컴포넌트(객체) 간의 제어권이 프레임워크나 컨테이너로 넘어가는 개념입니다. 즉, 개발자가 직접 객체의 생성과 관리를 하는 것이 아니라 외부에서 이를 제어하는 것을 의미합니다.

IoC의 핵심 아이디어는 다음과 같습니다:

제어의 역전: 객체의 생성 및 생명주기 관리 등의 제어가 개발자가 아닌 외부 엔티티에 의해 이루어집니다.

유연성: IoC는 컴포넌트 간의 결합도를 낮추어 변경 및 유지보수를 용이하게 만듭니다. 새로운 컴포넌트를 추가하거나 기존 컴포넌트를 변경할 때 시스템의 다른 부분에 미치는 영향을 최소화할 수 있습니다.

테스트 용이성: IoC는 의존성 주입과 함께 사용되어 테스트하기 쉬운 코드를 작성하는 데 도움을 줍니다. 의존성을 가짜(Mock) 객체로 대체하여 단위 테스트를 수행하기 쉬워집니다.

IoC는 주로 DI와 함께 사용되며, DI는 IoC를 실현하기 위한 구체적인 방법 중 하나입니다. IoC는 코드의 결합도를 낮추고 유연성과 확장성을 제공하여 소프트웨어 아키텍처를 개선하는 데 중요한 역할을 합니다.

0개의 댓글