При разработке приложения не существует стандартного способа структурирования в пакетах, опыт - это то, что обычно помогает каждому решить, каковы подходящие имена для наших пакетов.
О реализациях пакетовВаши интерфейсы в одном и том же пакете или в другом просто подумайте о том, как структурирована сама Java: обычно класс реализации упакован в тот же пакет, что и его интерфейс, но не всегда.
Если выбыло бы несколько реализаций одного и того же DAO, тогда имело бы смысл их структурировать в подпакеты .jdbc
, .jpa
или .jdo
.Если у вас будет только одна реализация, то оба перечисленных вами варианта имеют смысл в некотором смысле (тот же пакет или субпакет .impl
).
Что касается чрезмерного проектирования, я бы порекомендовал вам это статья .Даже если у вас будет только одна реализация ваших DAO, было бы разумно определить их как интерфейс и реализацию, так как это поможет вам в будущем переписать ваши DAO для других сред, в то время как код, использующийони остаются неизменными.
В конце концов, вы (или вы и ваши коллеги) должны прийти к консенсусу и принять решение, которое имеет больше смысла в вашем конкретном случае.
РЕДАКТИРОВАТЬ
Приложение обычно имеет одну реализацию для интерфейса DAO, и это совсем не слишком сложно, просто не имеет смысла иметь один и тот же интерфейс DAO для JPA и JDO.Некоторые из целей использования шаблона интерфейса / реализации - облегчить повторный факторинг, тестирование с помощью фиктивных объектов и т. Д.
PS: я обычно полагаюсь на JDepend для распространения своихклассы приложений в пакетах, избегая циклов, как я могу.