Junior — Middle
Կարող եք տալ կախվածության հակադարձման սկզբունքի կիրառման օրինակ իրական զարգացման մեջ?
sobes.tech AI
Պատասխան AI-ից
Անհրաժեշտ է, որ բարձր մակարդակի մոդուլները չպետք է ուղղակիորեն կախված լինեն ցածր մակարդակի մոդուլներից, այլ երկուսն էլ պետք է կախված լինեն աբստրակցիաներից:
Java-ում օրինակ:
// Աբստրակցիա
public interface MessageService {
void sendMessage(String message);
}
// կոնկրետ իրագործում
public class EmailService implements MessageService {
public void sendMessage(String message) {
System.out.println("Ուղարկում էլ.փոստ: " + message);
}
}
// Կլաս, որը կախված է աբստրակցիայից, ոչ թե կոնկրետ իրագործումից
public class Notification {
private MessageService service;
public Notification(MessageService service) {
this.service = service;
}
public void notifyUser(String message) {
service.sendMessage(message);
}
}
// Օգտագործում
public class Main {
public static void main(String[] args) {
MessageService emailService = new EmailService();
Notification notification = new Notification(emailService);
notification.notifyUser("Բարև!");
}
}
Այստեղ, Notification դասը կախված է MessageService ինտերֆեյսից, ոչ թե կոնկրետ EmailService-ից։ Սա թույլ է տալիս հեշտությամբ փոխել իրագործումը (օրինակ՝ SMS ծառայության), առանց Notification կոդը փոխելու։ Այս մոտեցումը բարելավում է կոդի թեստավորելիությունը և ընդլայնելիությունը։