Junior — Middle
Môžete uviesť príklad použitia princípu invertovania závislostí v reálnom vývoji?
sobes.tech AI
Odpoveď od AI
Princip inverzie závislostí (Dependency Inversion Principle, DIP) hovorí, že moduly vysokého stupňa by nemali závisieť priamo od modulov nízkeho stupňa, ale oba by mali závisieť od abstrakcií.
Príklad v Jave:
// Abstrakcia
public interface MessageService {
void sendMessage(String message);
}
// Konkrétna implementácia
public class EmailService implements MessageService {
public void sendMessage(String message) {
System.out.println("Odosielanie emailu: " + message);
}
}
// Trieda závislá od abstrakcie, nie od konkrétnej implementácie
public class Notification {
private MessageService service;
public Notification(MessageService service) {
this.service = service;
}
public void notifyUser(String message) {
service.sendMessage(message);
}
}
// Použitie
public class Main {
public static void main(String[] args) {
MessageService emailService = new EmailService();
Notification notification = new Notification(emailService);
notification.notifyUser("Ahoj!");
}
}
Tu závisí trieda Notification od rozhrania MessageService, nie od konkrétnej implementácie EmailService. To umožňuje ľahko meniť implementáciu (napríklad na SMS službu) bez nutnosti upravovať kód Notification. Tento prístup zlepšuje testovateľnosť a rozšíriteľnosť kódu.