2016-07-11 4 views
0

Много раз я видел, что один класс (Java) реализует один интерфейс. Этот интерфейс используется только для одного класса. Никакой другой класс не реализует его. Почему мы это делаем? Мне кажется, нам не нужен интерфейс, просто класс.Зачем нужен API и реализация?

Пример: https://github.com/essentials/Essentials/blob/2.x/Essentials/src/com/earth2me/essentials/I18n.java

+0

Мне нужен пример, прежде чем я смогу подумать об этом вопросе. –

+0

@a_river_in_canada Я добавил один – MCMastery

+1

У вас есть только одна реализация * сейчас * ... Некоторые люди любят быть супер-совместимыми в будущем. Является ли это всегда наиболее эффективным подходом является дискуссионным, конечно ... – deceze

ответ

0

Забудьте о языке на секунду.

Существует много причин использовать интерфейсы и иметь только один класс, интерфейс интерфейса абсолютно прекрасен.

Представьте, что вы хотите, чтобы написать тестируемый код, вы хотите сделать все хорошие вещи, есть тесты и т.д.

Хороший способ писать код, чтобы никогда никогда жестко закодировать все зависимости в классе. Это облегчает жизнь, если вы добавляете зависимости, и это делается через интерфейс или абстрактный класс. Таким образом, вы в принципе никогда не говорите, эй, класс, вот кошка, вы говорите, что это родовое животное, используйте это.

Интерфейс имеет одно задание для предоставления контракта, и именно это вы используете. Таким образом, вы отключаете свой код от зависимостей, поэтому теперь вы можете его протестировать, и вы можете легко издеваться над всеми вашими зависимостями. Тот факт, что у вас есть одна или более реализация, не имеет никакого значения.

+1

«Хороший способ писать код - никогда не создавать жесткие коды каких-либо зависимостей в классе». - Я просто хочу добавить, что также хорошо писать код, который является прагматичным и простым. Некоторые жестко закодированные зависимости более прагматичны и более просты, чем в зависимости от введенных интерфейсов. – jrahhali

Смежные вопросы