Когда в коде следует использовать интерфейсы (Java)?

Доброго времени суток! Прочитал, что использование интерфейсов в Java важно и является хорошей практикой. Но у меня нет четкого понимая, когда в коде следует их использовать. Я был бы очень рад увидеть примеры использования с обоснованием, почему они используются.
  • Вопрос задан
  • 451 просмотр
Пригласить эксперта
Ответы на вопрос 2
@bedward70
DevMan прав - по парадигме всегда!
На практике - любой написанный код (класс или интерфейс) требует расходов времени на создание и сопровождение. Сопровождать примитивный класс проще, чем примитивный класс и его интерфейс.

Поэтому на практике, обычно, пишут интерфейсы:
1. Как необходимую часть паттернов;
2. Если "интерфейс - это контракт взаимодействия": разрабатывается библиотека или компонент, здесь интерфейсы - это часть неизменяемого контракта;
3. Хорошая практика - все сервисы делать с интерфейсами. К этому подталкивают многие фреймерки JAVA, как пример: Spring и OSGi (Apache Felix);
4. Для JUnit тестировая. Пример: при тестировании бизнес логики, реальные сервисы заменяются тестовыми заглушками. Соотвественно класссы бизнес логики должны использовать интерфейсы, которые при реальной работе земеняются реальными имплементациями, а в тестовом окружении - тестовыми заглушками.
Ответ написан
Комментировать
pazukdev
@pazukdev
Java Dev
1, Абстракция нужна везде, где будет проходить ось изменений системы. А интерфейс - основное средство достижения абстракции в Java. Из этого следует п.2.
2. Всегда, когда нужна абстракция (за исключением случаев, когда абстракция должна обладать состоянием. В таком случае вместо интерфейса придется использовать абстрактный класс т.к. интерфейс не может обладать состоянием).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы