Необходимость отдельного интерфейса и реализации для DAO

У нас есть типичное Java-приложение уровня n -, и я заметил, что наши уровни доступа к данным имеют DAO типа FooDAO и FooDAOImpl.Я хотел обосновать необходимость этих двух, и вот мой анализ.

  1. Если у вас было несколько реализаций одного и того же интерфейса, абстракция будет полезна. Но учитывая, что мы уже выбрали платформу, которая будет использоваться для DAOImpl (, скажем, iBATIS ), действительно ли это необходимо?
  2. Помощь в проксировании через Spring. Из того, что я понял, классы, у которых есть интерфейсы, могут быть легко проксированы (, идущие по маршруту JdkProxy ), а не классы, у которых нет интерфейсов (, где выбран маршрут cglib )и у одного есть подкласс, к которому относится класс. быть проксированным. У подклассов есть свои проблемы, когда класс для проксирования является окончательным или не имеет конструкторов по умолчанию -, что маловероятно на уровне доступа к данным. Раньше производительность была важным фактором, но, насколько я слышал, она больше не вызывает беспокойства.
  3. Помощь в издевательстве. Классы с интерфейсами больше подходят для имитации фреймворков. Я только слышал об этом, но не видел на практике -, так что не могу на это рассчитывать, но, может быть, из-за тех же факторов, что упомянуты в #2 выше.

С учетом этих моментов я не чувствую реальной необходимости в отдельных FooDAO и FooDAOImpl, где должно быть достаточно простого FooDAO. Не стесняйтесь исправить любой из пунктов, которые я упомянул.

Заранее спасибо!

8
задан Kilokahn 4 July 2012 в 05:58
поделиться