[C#]의존성 주입 관련 예시 코드

badassong·2024년 4월 25일
0

C#

목록 보기
1/2

의존성 주입(Dependency Injection, DI)은 객체 간의 의존 관계를 외부에서 결정하고 생성자를 통해 객체를 전달하는 디자인 패턴입니다. 이를 통해 코드의 결합도를 낮추고 유지보수성을 향상시키며, 테스트 용이성을 높일 수 있습니다. 아래에 간단한 예시 코드와 함께 설명하겠습니다.

// 서비스 인터페이스 정의
public interface IMessageService
{
    void SendMessage(string message);
}

// 서비스 구현 클래스
public class EmailService : IMessageService
{
    public void SendMessage(string message)
    {
        Console.WriteLine("Email sent: " + message);
    }
}

// 의존성 주입을 받는 클래스
public class NotificationService
{
    private readonly IMessageService _messageService;

    // 생성자를 통한 의존성 주입
    public NotificationService(IMessageService messageService)
    {
        _messageService = messageService;
    }

    public void SendNotification(string message)
    {
        _messageService.SendMessage(message);
    }
}


// 응용 프로그램 진입점
class Program
{
    static void Main(string[] args)
    {
        // 의존성 주입 컨테이너 설정
        IMessageService emailService = new EmailService(); // 실제 서비스 객체 생성
        NotificationService notificationService = new NotificationService(emailService);

        // 의존성 주입을 통한 메시지 전송
        notificationService.SendNotification("Hello, world!");
    }
}

1. IMessageService: 메시지 전송 서비스를 위한 인터페이스입니다. 이를 통해 다양한 메시지 전송 방식을 지원할 수 있습니다.
2. EmailService: IMessageService를 구현한 이메일 전송 서비스입니다. SendMessage 메서드를 통해 이메일을 전송합니다.
3. NotificationService: 메시지를 전송하는데 사용되는 서비스를 의존성 주입으로 받습니다. 생성자를 통해 IMessageService를 인자로 받아 저장하고, SendNotification 메서드를 통해 메시지를 전송합니다.
4. Program 클래스: 응용 프로그램의 진입점입니다. 여기서는 이메일 전송 서비스를 사용하는 NotificationService를 생성하고 메시지를 전송합니다.

이 예시에서는 NotificationService가 IMessageService에 의존하고 있습니다. 이를 통해 NotificationService가 실제 메시지 전송 방법에 대해 알 필요 없이 재사용 가능한 형태로 구현할 수 있습니다. 또한, 의존성 주입 컨테이너를 사용하면 객체 생성 및 관리를 자동화하여 코드의 확장성을 높일 수 있습니다.

profile
풀스택 대장이 되어보쟈

0개의 댓글