.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
반응형