Junior — Middle
Можете ли да наведете пример примене принципа инверзије зависности у стварном развоју?
sobes.tech АИ
Одговор од АИ
Princip principa inverzije zavisnosti (Dependency Inversion Principle, DIP) kaže da visokorazredni moduli ne bi trebalo direktno da zavise od niskorazrednih modula, već oba treba da zavise od apstrakcija.
Primer u Javi:
// Apstrakcija
public interface MessageService {
void sendMessage(String message);
}
// Konkretna implementacija
public class EmailService implements MessageService {
public void sendMessage(String message) {
System.out.println("Slanje emaila: " + message);
}
}
// Klasa koja zavisi od apstrakcije, a ne od konkretne implementacije
public class Notification {
private MessageService service;
public Notification(MessageService service) {
this.service = service;
}
public void notifyUser(String message) {
service.sendMessage(message);
}
}
// Upotreba
public class Main {
public static void main(String[] args) {
MessageService emailService = new EmailService();
Notification notification = new Notification(emailService);
notification.notifyUser("Zdravo!");
}
}
Ovde, klasa Notification zavisi od interfejsa MessageService, a ne od konkretne implementacije EmailService. Ovo omogućava lako menjanje implementacije (npr. na SMS servis) bez potrebe za izmenom koda Notification. Ovaj pristup poboljšava testabilnost i proširivost koda.