Найти тему
DEBAGanov

Java 1280. Что такое Dependency Inversion Principle (Принцип инверсии зависимостей)?

1280. Что такое Dependency Inversion Principle (Принцип инверсии зависимостей)?

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

Пример на Java:

public interface MessageSender {
void sendMessage(String message);
}

public class EmailMessageSender implements MessageSender {
public void sendMessage(String message) {
// sending email message }
}

public class SmsMessageSender implements MessageSender {
public void sendMessage(String message) {
// sending SMS message }
}

public class NotificationService {
private MessageSender messageSender;
public NotificationService(MessageSender messageSender) {
this.messageSender = messageSender;
}
public void sendNotification(String message) {
messageSender.sendMessage(message);
}
}

public class MyApp {
public static void main(String[] args) {
MessageSender messageSender = new EmailMessageSender();
NotificationService notificationService = new NotificationService(messageSender);
notificationService.sendNotification("Hello World!");
}
}

В этом примере зависимость между NotificationService и MessageSender инвертирована. Мы создаем экземпляр MessageSender вне NotificationService и передаем его через конструктор. Таким образом, NotificationService не зависит от конкретной реализации MessageSender, а зависит только от абстракции MessageSender. Это позволяет нам легко заменять конкретные реализации MessageSender, добавлять новые реализации и тестировать NotificationService независимо от реализации MessageSender.

1606 вопрос-ответ по Java

Курс Spring Framework

Tелеграмм каналDEBAGanov

Мое резюмеDEBAGanov