Причины сохранения интерфейсов и реализации в отдельных пакетах:
чистая кодовая база - выглядит «лучше», более аккуратно, если у нас есть один пакет с интерфейсами и другой с реализациями (обычно это пространство имен something.impl
). И структура кода показывает / отражает то, что вы кодируете против интерфейсов.
модификаторы доступа - Мы можем использовать модификаторы частного доступа к пакету для некоторых частных API-пакетов для реализации связанного интерфейса.
структура библиотеки - Возможно, однажды вы решите создать разные библиотеки для API (интерфейсов) и реализации (й). Тогда очень хорошо иметь интерфейсы и реализации в разных пакетах. Таким образом, вы можете изменить сборку без рефакторинга базы кода.