Предоставление всем интерфейса (или, в более общем смысле, проектирование для обеспечения гибкости, которая, вероятно, останется неиспользованной), называется чрезмерным проектированием. Если вы, вероятно, никогда не будете иметь более чем одну конкретную реализацию чего-то, интерфейс просто раздут. Код, который избегает создания неиспользуемой гибкости, легче понять, потому что без интерфейса, скрывающего тот факт, что у вас есть только одна реализация, вы знаете , с каким конкретным типом вы имеете дело, и код легче рассуждать .
Это также один из моих любимых аргументов против насмешек: он вводит в ваш код искусственные требования, такие как возможность иметь более одной реализации вещей, из которых у вас когда-либо будет только одна «реальная» реализация.