.NET
C# 에서 의존성 주입 사용하는가 (Dependency Injection) | ChatGPT
stacknstack
2023. 8. 25. 22:00
728x90
반응형
의존성 주입(Dependency Injection, DI)은 외부에서 두 객체 간의 관계를 결정해주는 디자인 패턴 이다.
인터페이스를 사이에 두어, 클래스 레벨에서는 의존관계가 고정되지 않도록 하고
런타임 시에 관계를 동적으로 주입하여 유연성을 확보하고 결합도를 낮출 수 있게 해준다.
- 느슨한 결합: 클래스는 특정 구현에 대한 의존도가 낮아져 클래스를 교체, 업데이트 또는 확장하기가 더 쉬워집니다.
- 테스트 가능성: 종속성은 단위 테스트를 위한 모의 개체 또는 테스트 구현으로 쉽게 대체될 수 있습니다.
- 모듈성: 구성 요소가 더욱 모듈화되어 독립적으로 개발, 테스트 및 유지 관리될 수 있습니다.
- 유연성: 클라이언트 코드에 영향을 주지 않고 다양한 종속성 구현을 쉽게 교체할 수 있습니다.
- 단일 책임 원칙: 각 클래스는 핵심 책임에 초점을 맞추고 부차적인 문제는 다른 클래스에 의존합니다.
C# 에서 의존성 주입이 없는 예시
public class UserService {
private DatabaseContext _dbContext;
public UserService() {
_dbContext = new DatabaseContext(); // Creating a dependency internally
}
public List<User> GetAllUsers() {
return _dbContext.Users.ToList();
}
}
C# 에서 의존성 주입의 예시
// UserService 클래스가 자체 DatabaseContext 인스턴스를 생성하지 않습니다.
// DatabaseContext 대신 일반적으로 생성자를 통해 호출자로부터 인스턴스를 받습니다.
public class UserService {
private DatabaseContext _dbContext;
public UserService(DatabaseContext dbContext) {
_dbContext = dbContext; // Dependency provided from outside
}
public List<User> GetAllUsers() {
return _dbContext.Users.ToList();
}
}
출처 | ChatGPT
728x90
반응형