Главная роль интерфейса, это не контракт, а обозначение архитектурных границ.
Суть контракта всегда заключается в его содержании. В зависимости от содержания контракт может быть полезным либо бесполезным.
Суть границы определяется её наличием и расположением. Свою пользу она приносит уже своим существованием. Разграничивая области взаимодействия компонентов, мы упрощаем высокоуровневую структуру приложения.
Интерфейс нужен в первую очередь для построения качественной абстракции, а уже второстепенная роль - использование во всяческих паттернах с наследованием.
Архитектура — это не только паттерны, но большинству разработчиков это неведомо (