cs 공부
DI와 IoC에대해 알려주세요
늘곰's
2023. 10. 25. 01:20
DI와 IoC는 객체 지향 프로그래밍에서 중요한 개념입니다. DI는 의존성 주입을 의미하며, IoC는 제어의 역전이라는 뜻입니다.
DI와 IoC의 개념
DI(Dependency Injection)는 객체의 의존성을 외부에서 주입하는 것을 의미합니다. 기존에는 객체가 자신의 의존성을 직접 생성하거나 조회하는 방식으로 코드가 작성되었습니다. 하지만 DI를 사용하면 객체의 의존성을 외부에서 주입하여 코드의 재사용성과 유연성을 향상시킬 수 있습니다. 즉 외부의 데이터를 참조 할수있습니다.
IoC(Inversion of Control)
IOC란 메인 프로그램에서 컨테이너나 프레임워크로 객체와 객체의 의존성에 대한 제어(control)를 옮기는 것을 말한다.
기존에는 객체를 직접 생성하거나 제어하는 방식으로 코드가 작성되었습니다. 하지만 IoC를 사용하면 객체의 생성과 제어를 외부에서 담당하여 코드의 모듈성과 테스트 가능성을 향상시킬 수 있습니다. ioc 와 di가 같은 의미로 사용되는 경우도 있지만 DI는 ioc의 하나의 예시이고 좀더 포괄적인 의미가 ioc이다.
DI와 IoC의 차이
DI와 IoC는 밀접한 관련이 있는 개념이지만, 차이점이 있습니다. DI는 객체의 의존성을 외부에서 주입하는 것을 의미하는 반면, IoC는 객체의 생성과 제어를 외부에서 담당하는 것을 의미합니다.
DI와 IoC의 사용
- 객체의 재사용성을 높이고 싶은 경우: DI를 사용합니다.
- 객체의 유연성을 높이고 싶은 경우: DI를 사용합니다.
- 객체의 모듈성과 테스트 가능성을 높이고 싶은 경우: IoC를 사용합니다.
- 데이터베이스 연결을 사용하는 객체: DI를 사용하여 데이터베이스 연결을 외부에서 주입합니다.
- 로그를 작성하는 객체: DI를 사용하여 로그를 작성하는 인터페이스를 외부에서 주입합니다.
- 테스트를 위한 객체: IoC를 사용하여 객체를 생성하고 제어합니다.