私は一般的に、ABCよりも純粋なインターフェースに関連する保守問題にはるかに多く直面しています。YMMV-知らない、多分私たちのチームはそれらを不適切に使用しただけかもしれません。
そうは言っても、現実世界の類推を使用する場合、機能と状態がまったくない純粋なインターフェースにはどれほどの用途がありますか?USBを例として使用すると、これはかなり安定したインターフェイスです(現在USB 3.2になっていると思いますが、下位互換性も維持しています)。
しかし、それはステートレスなインターフェースではありません。機能が欠けているわけではありません。これは、純粋なインターフェースというよりは抽象基本クラスに似ています。実際には、非常に具体的な機能および状態の要件を持つ具体的なクラスに近く、ポートにプラグインする部分のみが代替可能な部分であるという抽象化のみがあります。
それ以外の場合は、標準化されたフォームファクターとはるかに緩やかな機能要件を備えたコンピューターの「穴」になり、すべてのメーカーがその穴に何かをさせる独自のハードウェアを思い付くまでは何もしません。それははるかに弱い標準になり、「穴」と何をすべきかの仕様に過ぎませんが、それを行う方法の中心的な規定はありません。一方、すべてのハードウェアメーカーが独自の方法で機能と状態をその「穴」にアタッチしようと試みた後、200の異なる方法で終わる可能性があります。
そして、その時点で、他のメーカーとは異なる問題を引き起こす特定のメーカーがいる可能性があります。仕様を更新する必要がある場合は、200種類の具体的なUSBポートの実装があり、まったく異なる方法で仕様に取り組み、更新とテストを行う必要があります。一部のメーカーは、すべてではなく、自社間で共有する事実上の標準実装(そのインターフェイスを実装するアナロジーの基本クラス)を開発する場合があります。一部のバージョンは他のバージョンより遅い場合があります。スループットは向上するものの、遅延が低下するものもあれば、その逆もあります。他のものより多くのバッテリー電力を使用するかもしれません。USBポートで動作するはずのすべてのハードウェアで動作せずに動作しないものもあります。いくつかは、原子炉を作動させるために取り付ける必要があり、それはユーザーに放射線中毒を与える傾向があります。
そして、それは私が個人的に純粋なインターフェースで見つけたものです。CPUケースに対してマザーボードのフォームファクターをモデル化するだけのように、それらが理にかなっている場合があります。実際、フォームファクターのアナロジーは、ステートレスであり、アナロジー的な「穴」と同様に機能性を欠いています。しかし、チームがすべての場合において何らかの理由で優れていると考えることは、大きな違いであることをよく考えます。
それとは反対に、ABCの方がインターフェースよりもはるかに多くのケースを解決できると思います。インターフェースが2つの選択肢である場合は、チームが非常に大きく、1つの中央標準ではなく200維持します。私が所属していた元チームでは、主に上記のメンテナンスの問題に対応するため、ABCと多重継承を許可するためにコーディング標準を緩めるためだけに実際に懸命に戦わなければなりませんでした。