Sobes.tech
Junior — Middle
100

Шынайы даму барысында тәуелділікті инверсиялау принципін қолданудың мысалын келтіре аласыз ба?

Сұралған компаниялар
СБЕРСБЕР

AI-дан жауап

sobes.tech AI

Принцип инверсии зависимостей (Dependency Inversion Principle, DIP) говорит, что модули высокого уровня не должны зависеть от модулей низкого уровня напрямую, а оба должны зависеть от абстракций.

Пример на Java:

// Абстракция
public interface MessageService {
    void sendMessage(String message);
}

// Конкретная реализация
public class EmailService implements MessageService {
    public void sendMessage(String message) {
        System.out.println("Sending email: " + message);
    }
}

// Класс, зависящий от абстракции, а не от конкретной реализации
public class Notification {
    private MessageService service;

    public Notification(MessageService service) {
        this.service = service;
    }

    public void notifyUser(String message) {
        service.sendMessage(message);
    }
}

// Использование
public class Main {
    public static void main(String[] args) {
        MessageService emailService = new EmailService();
        Notification notification = new Notification(emailService);
        notification.notifyUser("Hello!");
    }
}

Здесь класс Notification зависит от интерфейса MessageService, а не от конкретной реализации EmailService. Это позволяет легко менять реализацию (например, на SMS-сервис) без изменения кода Notification. Такой подход улучшает тестируемость и расширяемость кода.