Sobes.tech
Junior — Middle

Haqiqiy dasturlashda bog'liqliklarni inversiya qilish prinsipidan foydalanish misolini keltira olasizmi?

sobes.tech AI

AIdan javob

Dependency Inversion Principle (DIP) prinsipiga ko'ra, yuqori darajadagi modullar to'g'ridan-to'g'ri past darajadagi modullarga bog'liq bo'lmasligi kerak, ikkalasi ham abstraktsiyalarga bog'liq bo'lishi kerak.

Java'da misol:

// Abstraktsiya
public interface MessageService {
    void sendMessage(String message);
}

// Aniq amalga oshirish
public class EmailService implements MessageService {
    public void sendMessage(String message) {
        System.out.println("Email yuborilmoqda: " + message);
    }
}

// Abstraktsiyaga bog'liq bo'lgan, aniq amalga oshirish emas
public class Notification {
    private MessageService service;

    public Notification(MessageService service) {
        this.service = service;
    }

    public void notifyUser(String message) {
        service.sendMessage(message);
    }
}

// Foydalanish
public class Main {
    public static void main(String[] args) {
        MessageService emailService = new EmailService();
        Notification notification = new Notification(emailService);
        notification.notifyUser("Salom!");
    }
}

Bu yerda, Notification sinfi MessageService interfeysiga bog'liq, EmailService kabi aniq amalga oshirishga emas. Bu, Notification kodini o'zgartirmasdan (masalan, SMS xizmati uchun) amalga oshirishni o'zgartirish imkonini beradi. Bu yondashuv, kodning test qilish va kengaytirish imkoniyatini yaxshilaydi.