Страницы

Поиск по вопросам

суббота, 15 июня 2019 г.

Абстракция или конкретная реализация?

В книге Философия Java не раз употребляется фраза вроде:
Вспомните совет, данный в конце предыдущей главы: отдавать предпочтение классам перед интерфейсами. Если архитектура системы требует применения интерфейса, вы это поймете. В остальных случаях не применяйте интерфейсы без крайней необходимости.
Вместе с тем, почти во всех книга по ООП и паттернам говорится, что предпочтение всегда (!) должно отдаваться абстракции, а не реализации.
Реального опыта программирования на Java не имею, поэтому такие противоречивые высказывания сбивают с толку. Кому верить ?


Ответ

Далее в книге есть такие слова:
"В общем случае рекомендуется отдавать предпочтение классам перед ин­терфейсами. Начните с классов, а если необходимость интерфейсов станет оче­видной — переработайте архитектуру своего проекта. Интерфейсы — замеча­тельный инструмент, но ими нередко злоупотребляют."
Однако если проект разросся до огромных размеров, то фраза "переработайте архитектуру" выглядит очень сомнительной. Как-от слабо себе представляю большой проект в котором так легко можно сказать "переработайте архитектуру." Это как раз тот вид ошибок, который трудно исправлять. По-моему мнению, даже если существует только одна реализация - то лучше применять интерфейс. Кроме того, обычно интерфейсы сопровождаются вынесением зависимостей классов друг от друга во внешний ресурс (например, в xml файл) - что в больших проектах есть необходимость.

Комментариев нет:

Отправить комментарий