Sobes.tech
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 каби аниқ амалга оширишга эмас. Бу, Notification кодини ўзгартирмай, (масалан, SMS хизматига ўтиш) осонгина амалга ошириш имконини беради. Бу ёндашув коднинг тестлаш ва кенгайтириш қобилиятини яхшилайди.