Junior — Middle
Tudna példát mondani az függőségek fordított elvének valódi fejlesztésben való alkalmazására?
sobes.tech MI
Válasz az MI-től
A függőségek fordított elvének (Dependency Inversion Principle, DIP) szerint a magas szintű moduloknak nem szabad közvetlenül az alacsony szintű modulokra támaszkodniuk, hanem mindkettőnek az absztrakciókra kell támaszkodnia.
Példa Java-ban:
// Absztrakció
public interface MessageService {
void sendMessage(String message);
}
// Konkrét megvalósítás
public class EmailService implements MessageService {
public void sendMessage(String message) {
System.out.println("Email küldése: " + message);
}
}
// Osztály, amely az absztrakciótól függ, nem a konkrét megvalósítástól
public class Notification {
private MessageService service;
public Notification(MessageService service) {
this.service = service;
}
public void notifyUser(String message) {
service.sendMessage(message);
}
}
// Használat
public class Main {
public static void main(String[] args) {
MessageService emailService = new EmailService();
Notification notification = new Notification(emailService);
notification.notifyUser("Helló!");
}
}
Itt a Notification osztály az MessageService interfészre támaszkodik, nem a konkrét EmailService-re. Ez lehetővé teszi a megvalósítás könnyű cseréjét (pl. SMS szolgáltatásra) anélkül, hogy módosítani kellene a Notification kódját. Ez a megközelítés javítja a kód tesztelhetőségét és bővíthetőségét.