以前に設計した 3 つのクラス (A、B、および C) で使用されるクラス X を追加しようとしています。
新しいクラス X には、新しい機能のためのデータと関数が含まれているだけでなく、それを使用して下位層を非表示にするクラスにサービスを提供します。問題は、A、B、および C がクラス X をまったく異なる方法で使用することです。つまり、異なる機能を使用することです。
私の質問は、新しいクラス X に API (または C++ の抽象基本クラス) を提供する必要があるかどうかです。その API は、X クラスごとにするか、A、B、および C クラスごとにする必要がありますか? API は、それを実装するクラスよりも、その呼び出し元により密接に関連している場合があることをどこかで読んだことがあります。呼び出し元ごとに 1 つの API を提供すると、API には特定の呼び出し元が必要とする関数のみが含まれます。
それとも、通常の C++ クラスを作成し、呼び出し元が A、B、および C のそれぞれで X のパブリック関数のサブセットを使用できるようにする必要がありますが、「技術的には」それらすべてを使用できますか? クラス X の機能が変更される可能性はほとんどなく、X と同様のクラスを作成する必要もありません。
オブジェクト指向プログラミングに完全に精通しているわけではない場合、クラスにインターフェイス/API を提供する理由の 1 つは、別のサブクラスを追加してもインターフェイス/API を使用するコードを変更する必要がないためです。これは、呼び出し元がインターフェイスで動作するためです。名前を付け、動的バインディングを使用して正しいサブクラス タイプを解決します。
ご不明な点がありましたらお知らせください。できる限り迅速にお答えできるよう努めます。
ありがとう、
トーマス