Если действительно существует одна реализация, и только когда-либо будет одна реализация, не кодируйте интерфейс. (YAGNI).
Тем не менее, в 99% случаев существует как минимум две реализации класса, одна реальная, другая используется в тестировании.
Простота разделения и проверки частей системы во время тестирования более чем стоит дополнительных усилий по созданию интерфейса для одного класса.
В качестве дополнительного примечания, и, возможно, это просто из-за того, что мне не хватает самоконтроля, кодирование с интерфейсами делает меня намного более сосредоточенным, когда я работаю над определенным классом. Я поймал себя на мысли, что «и этот интерфейс, который я вызываю, вернет / сделает это», а не «и этот класс, с которым я работаю вот так, вызывает x, преобразовывает y, общается с z, кладет кофе, пухнет pillows, интегрирует n относительно y и затем возвращает экземпляр monkey ... подождите, что я снова делал? "