Notice
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 분산형 아키택처
- 토글기능
- jquery
- soild
- 의존성주입
- 객체지향 5대 특징
- 멀티프로세스
- 3-Way Handshake
- oop 4대 특성
- 로그인기능 #
- 비절차형 언어
- 마이크로서비스아키택처
- flask
- 함수지향
- Arrays.sort()
- 클래스추가
- 회원가입기능
- 의존역적원칙
- 빅오표기법
- CORS
- nat inside
- AttributeError
- 객체지향
- 클래스삭제
- 향상된 for문
- 프로그래머스
- 4-Way Handshake
- 타입오류
- MSA
- 배열오름차순정렬
Archives
- Today
- Total
개발하는 체대생
DI(Dependency Injection)란? 본문
질문 : DI(Dependency Injection)에 대한 설명과 해당 기술의 장점에 대해 설명해주세요.
답변 : DI(Dependency Injection)란 의존성 주입이라는 의미로 객체를 직접 생성하는 게 아니라 외부에서 생성한 후 주입 시켜주는 방식입니다.
DI(의존성 주입)를 사용하면 모듈 간의 결합도가 낮아지고 유연성이 높아지며 가독성 및 코드 중복, 유지 보수를 편하게 할 수 있다는 장점이 있습니다.
DI(Dependency Injection)란?
DI(Dependency Injection)는 소프트웨어 개발에서 사용되는 디자인 패턴 중 하나로, 의존성을 주입하는 것을 의미합니다. 의존성은 한 객체가 다른 객체에 의존하는 상황을 말합니다. 이러한 상황에서 의존하는 객체를 직접 생성하거나 참조하는 것보다, DI를 통해 외부에서 해당 객체를 주입하여 의존성을 해결할 수 있습니다.
DI는 다음과 같은 방식으로 사용됩니다.
- 생성자 주입(Constructor Injection): 생성자를 통해 의존성을 주입하는 방식입니다.
- 메서드 주입(Method Injection): 메서드를 통해 의존성을 주입하는 방식입니다.
- 속성 주입(Property Injection): 속성을 통해 의존성을 주입하는 방식입니다.
DI(Dependency Injection)의 장점
- 유연성: DI를 사용하면 객체 간의 결합도를 낮출 수 있어, 유연한 코드를 작성할 수 있습니다. 의존성을 외부에서 주입하기 때문에 객체를 변경하더라도 영향을 최소화할 수 있습니다.
- 테스트 용이성: DI를 사용하면 의존하는 객체를 모의(mock) 객체로 대체하여 테스트를 수행할 수 있습니다. 이렇게 하면 의존성을 가진 객체를 변경할 필요 없이 해당 객체의 행동을 테스트할 수 있습니다.
- 코드 재사용성: DI를 사용하면 의존성을 주입하는 부분을 별도로 분리하여 코드를 재사용할 수 있습니다. 이렇게 하면 유지보수 비용을 줄일 수 있습니다.
또한 DI는 객체지향 5대 설계 원칙 중 하나인 의존성 역전 원칙(Dependency Inversion Principle)과 밀접한 관련이 있습니다.
*의존역전원칙(Dependency Inversion Principle)
이 원칙은 상위 수준의 모듈이 하위 수준의 모듈에 의존해서는 안 되며, 추상화된 인터페이스에 의존해야 한다는 원칙입니다. 예를 들어, 삼성핸드폰이라는 하위 수준의 모듈의 의존하는 것이 아니라 핸드폰이라는 추상화된 인터페이스에 의존해야한다는 원칙입니다.
'취업스터디' 카테고리의 다른 글
제네릭이란? (0) | 2023.03.29 |
---|---|
MSA(Micro Service Architecture)란? (0) | 2023.03.29 |
DB에서 Index란? (0) | 2023.03.28 |
RESTful API란? (0) | 2023.03.27 |
객체지향 프로그래밍(OOP)에 대한 설명 (0) | 2023.03.27 |
Comments