Я люблю интерфейсы с поддержкой дефолтных методов. В Rust эта фича очень развита, покрывает почти всё, что взбредёт в голову.
Если её нет, а дефолтную функциональность хочется добавить, то в большинстве ЯП есть абстрактные классы.
Если хочется чего-то другого, то значит, код попахивает.