Junior — Middle
Vai jūs varētu sniegt piemēru, kā praktiski izmantot atkarību inversijas principu reālajā izstrādē?
sobes.tech AI
Atbilde no AI
Atkarības inversijas princips (Dependency Inversion Principle, DIP) nosaka, ka augstākā līmeņa moduļiem nevajadzētu tieši atkarīties no zemākā līmeņa moduļiem, bet abi jāatkarībā no abstrakcijām.
Piemērs Java:
// Abstrakcija
public interface MessageService {
void sendMessage(String message);
}
// Konkrēta realizācija
public class EmailService implements MessageService {
public void sendMessage(String message) {
System.out.println("Sūta e-pastu: " + message);
}
}
// Klase, kas atkarīga no abstrakcijas, nevis no konkrētas realizācijas
public class Notification {
private MessageService service;
public Notification(MessageService service) {
this.service = service;
}
public void notifyUser(String message) {
service.sendMessage(message);
}
}
// Lietošana
public class Main {
public static void main(String[] args) {
MessageService emailService = new EmailService();
Notification notification = new Notification(emailService);
notification.notifyUser("Sveiki!");
}
}
Šeit, Notification klase ir atkarīga no MessageService interfeisa, nevis no konkrētas EmailService realizācijas. Tas ļauj viegli mainīt realizāciju (piemēram, uz SMS pakalpojumu) bez Notification koda izmaiņām. Šī pieeja uzlabo koda testējamību un paplašināmību.