インターフェースと実装は別物だからな
親クラスから実装を継承して各子クラスの処理を書けば否応なく見通しは悪くなるが、
一つのクラスに親クラスの処理と全子クラスで使われる処理を書けば見通しはよくなる
あとはinterfaceだけ実装し、各子クラスはどの処理を使うかを選んで
委譲するだけのコードを書けばいい
外部から見たinterfaceの簡潔さと、内部の見通しの良さを両立できる

まあinterfaceはメソッドシグネチャを規定するだけだから
その用途なら関数オブジェクトとクロージャを使った方が簡潔に書ける
JavaやC++ではクロージャの導入が進んでいて
それが済んだらinterfaceは大部分の用途では用済みになる