Вы никогда не должны помещать интерфейсы вместе с классами, которые их реализуют (если эти классы не удовлетворяют требованиям ниже). Это приведет к жесткой связи между интерфейсом и исполнителем, и вы не сможете создавать другие реализации интерфейса без одновременной ссылки на реализатор.
У вас есть два варианта:
- Соедините интерфейсы с классами , потребляющими их. Это все еще создает тесную связь, но эта связь менее проблематична, так как потребители часто живут в библиотеке, которая предоставляет связанные типы. В этом случае, если у вас есть разработчики в этой библиотеке, они могут реализовать интерфейсы, не вводя никакой дополнительной связи.
- Для максимальной слабой связи 1013 * поместите интерфейсы в отдельную библиотеку. Это дает вам большую гибкость, но может также потребовать дополнительной работы.