В настоящее время я пытаюсь выяснить, ТВЕРДЫЙ. Таким образом, принцип обращения зависимостей означает, что любые два класса должны взаимодействовать через интерфейсы, а не напрямую. Пример: если class Aесть метод, который ожидает указатель на объект типа class B, то этот метод должен фактически ожидать объект типа abstract base class of B. Это также помогает для открытия / закрытия.
При условии, что я правильно понял, мой вопрос будет состоять в том, является ли хорошей практикой применение этого ко всем взаимодействиям классов или я должен попытаться мыслить с точки зрения слоев ?
Причина, по которой я скептически отношусь, заключается в том, что мы платим некоторую цену за следование этому принципу. Скажем, мне нужно реализовать функцию Z. После анализа я пришел к выводу, что функция Zсостоит из функциональности A, Bи C. Я создать фасад класс Z, который, через интерфейсы, использует классы A, Bи C. Я начинаю кодировать реализацию и в какой-то момент понимаю, что задача на Zсамом деле состоит из функциональности A, Bи D. Теперь мне нужно пересмотреть Cинтерфейс, Cпрототип класса и написать отдельный Dинтерфейс и класс. Без интерфейсов только класс должен был бы быть заменен.
Другими словами, чтобы что-то изменить, мне нужно поменять 1. вызывающую сторону 2. интерфейс 3. декларацию 4. реализацию. В реализации, напрямую связанной с Python, мне нужно будет изменить только реализацию.