Забудьте о языке на секунду.
Существует много причин использовать интерфейсы и иметь только один класс, интерфейс интерфейса абсолютно прекрасен.
Представьте, что вы хотите, чтобы написать тестируемый код, вы хотите сделать все хорошие вещи, есть тесты и т.д.
Хороший способ писать код, чтобы никогда никогда жестко закодировать все зависимости в классе. Это облегчает жизнь, если вы добавляете зависимости, и это делается через интерфейс или абстрактный класс. Таким образом, вы в принципе никогда не говорите, эй, класс, вот кошка, вы говорите, что это родовое животное, используйте это.
Интерфейс имеет одно задание для предоставления контракта, и именно это вы используете. Таким образом, вы отключаете свой код от зависимостей, поэтому теперь вы можете его протестировать, и вы можете легко издеваться над всеми вашими зависимостями. Тот факт, что у вас есть одна или более реализация, не имеет никакого значения.
Мне нужен пример, прежде чем я смогу подумать об этом вопросе. –
@a_river_in_canada Я добавил один – MCMastery
У вас есть только одна реализация * сейчас * ... Некоторые люди любят быть супер-совместимыми в будущем. Является ли это всегда наиболее эффективным подходом является дискуссионным, конечно ... – deceze