Junior — Middle
შეგიძლიათ გამოიტანოთ მაგალითი დამოკიდებულების ინვერსიის პრინციპის გამოყენებაზე რეალურ განვითარებაში?
sobes.tech AI
პასუხი AI-სგან
Dependency Inversion Principle (DIP) ამბობს, რომ მაღალი დონის მოდულები არ უნდა იყოს პირდაპირ დამოკიდებული დაბალი დონის მოდულებზე, ორივე უნდა იყოს დამოკიდებული აბსტრაქციებზე.
მაგალითი 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 კოდის შეცვლის გარეშე. ეს მიდგომა აუმჯობესებს კოდის ტესტირებადობას და გაფართოებადობას.