В настоящее время я пытаюсь выяснить, ТВЕРДЫЙ. Таким образом, принцип обращения зависимостей означает, что любые два класса должны взаимодействовать через интерфейсы, а не напрямую. Пример: если 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, мне нужно будет изменить только реализацию.