Здравствуйте! Есть вопрос насчёт расположения в проекте интерфейсов. Я думаю многим известна эта картинка:
По дефолту мы располагаем сущности и интерфейсы в ядре (по крайней мере, у меня так сделано) - слой core или domain. Но что если у меня в core.interfaces.py лежат абстрактные классы (интерфейсы):
1) класс, ответственный за репозиторий (методы загрузки и выгрузки данных из файла в память и обратно);
2) класс, ответственный за конвертацию пользовательского объекта в словарь и обратно
3) класс, ответственный за то, по какому алгоритму будет формироваться новый id для добавления записи в бд;
Пример:
Реализации этих интерфейсов лежат по разным слоям/папкам, а вот сами интерфейсы в одном месте - модуле interfaces.py
С точки зрения чистой архитектуры стоило бы переложить интерфейсы туда, где лежат их реализации ( в одну директорию), но добавить в каждый слой, подслой core (т. е. ядро именно для этого слоя), куда бы мы и положили интерфейсы?