В настоящее время я борюсь с тем, достиг ли я хорошего уровня разделения, или я где-то упустил момент, поскольку я относительно новичок в изучении дисциплинированной стороны развития ...
Моя цель, когда я начинал, состояла в том, чтобы создать слой, независимый от любого механизма персистентности - я назвал это data-api. Затем я реализовал эти интерфейсы с помощью JDO и назвал этот проект data-jdo. Логический уровень в идеале говорит только в курсе data-api.
Это тот момент, когда я не уверен, что имеет смысл. Слой бизнес-логики должен вызываться как-то, верно? Так есть ли ожидание, что реализация data-api (data-jdo или что-то еще, в зависимости от экспериментов) обеспечивается (уместно сказать / делать инъекцией?) Инициатором?
Таким образом, цель состояла бы в том, чтобы (в основном для опыта, а не для производительности), возможно, реализовать пакет data-jpa, который мог бы быть заменен вместо data-jdo. Таким образом, самый верхний уровень (веб-сервис, универсальный основной метод как часть инструмента, модульные тесты и т. Д.) - это те, которые делают выбор, какую реализацию использовать.
Должен ли я использовать какой-то фреймворк, такой как Spring, чтобы позволить мне выбирать, какая реализация моего data-api используется через XML?
Извините, если это немного расплывчато ... Я предполагаю, что основной вопрос в том, в какой момент потребитель API зависит, поставляет или связывается с реализацией этого API? Если ответом является или должно быть «никогда», то что используется для того, чтобы убедиться, что все доступно во время выполнения, и как потребитель получает экземпляр того, что «API» описывает только с интерфейсами?