Прежде чем задать этот вопрос, я хотел бы сказать, что этот вопрос в stackoverflow очень похож на мой вопрос, но, тем не менее, концепция не совсем ясна и очень запутанна.
Я пытаюсь понять принцип инверсии зависимости, но не могу понять его полностью?
Ниже приведены два пункта, которые DIP говорит
A.Модули высокого уровня не должны зависеть от модулей низкого уровня.Оба должны зависеть от абстракций.Б. Абстракции не должны зависеть от деталей.Детали должны зависеть от абстракций.
Я могу уловить первую точку, но не могу получить вторую, ее вид одинаков.После большого количества поисков в stackoverflow и других сайтах я могу понять, что оба пытаются сказать что-то другое, но я не смог получить его.
Рассмотрим пример:
Рассмотрим класс SalaryCalculator [модуль высокого уровня], который используется для расчета заработной платы сотрудника.Который использует BonusCalculator [модуль высокого уровня] для расчета зарплаты, как показано ниже.Поскольку SalaryCalculator использует BonusCalculator, он нарушает первый пункт «Модули высокого уровня не должны зависеть от модулей низкого уровня.Оба должны зависеть от абстракций ».
Поэтому мы ввели абстракцию между ними, как показано ниже:
Здесь детали [Модули низкого и высокого уровня] зависят от абстракции, а абстракция не зависит от деталей.Так в DIP, что пытается сказать вторая точка? Если оба они одинаковы, почему это сделано в виде двух точек?
Если кто-нибудь даст мне пример кода , это будет очень полезно.