インターフェイスは、セマンティクスまたは概念を定義するためのコントラクトと考えてください。これは一般的なアプローチであり、実際には言語固有ではありません。OOのコンテキストでは、単一の継承モデルで作業している場合、オブジェクトモデルを定義するためにクラスよりもインターフェイスを優先するための優れたケースがあります。これは、その単一のスーパークラスパスウェイが非常に貴重であり、オブジェクトまたはメソッドに公開されるプロパティを定義するよりも「実質的な」何か。
IContainerセマンティクス(コントラクト)を使用することは、フォルダーからインターフェイスを作成する理由としてはかなり不十分です。フォルダーを作成することをお勧めします(重要なロジックを実行している場合)。言語のコアフレームワークに(既存の可能性が高い)IContainerまたはICollectionインターフェイスを「実装」します。
いつものように、より良い選択は特定の問題にかなり依存しています。フォルダ(?!)でもあるレシピの場合、おそらく親子、つまり構成の関係を考えています。これは、システムに他の要素がある場合にインターフェイスを使用して表現できる(そして表現する必要がある)セマンティクスです。その種のセマンティクスを使用して構成されたものを「操作」します。
インターフェイスには(プログラミングに関して)少しオーバーヘッドがあります。WoofとIWoofのクラスとインターフェイスのセットだけを使い終わったときに、おそらく表現する必要がなかったことがわかります。インターフェイスに関する問題-単純なクラスで十分だったでしょう。
原則として、どのIでも、少なくとも2つの具象クラス(IImpl、または以外のより意味のある名前)が必要です。
お役に立てば幸いです。