たとえば、ここhttps://stackoverflow.com/a/589885/1420898など、静的メンバーは不適切な OO 設計であり、避ける必要があることを何度か読みました 。私が取り組んでいるプロジェクトでも発生します。彼らは、他のクラスでいくつかの操作を実行するためにその関数を使用するだけなので、私には静的クラスであるべきと思われるクラスのインターフェイス + 実装を使用しました。
私の質問は、静的クラスよりもインターフェイスを使用する必要があるのはなぜですか?
たとえば、ここhttps://stackoverflow.com/a/589885/1420898など、静的メンバーは不適切な OO 設計であり、避ける必要があることを何度か読みました 。私が取り組んでいるプロジェクトでも発生します。彼らは、他のクラスでいくつかの操作を実行するためにその関数を使用するだけなので、私には静的クラスであるべきと思われるクラスのインターフェイス + 実装を使用しました。
私の質問は、静的クラスよりもインターフェイスを使用する必要があるのはなぜですか?
インターフェースに対して静的クラスを使用するという点では、静的クラスはヘルパーとして使用されます。つまり、クラスの単一のインスタンスになりますが、インターフェースを介してインスタンス化されるクラスは多くの異なる実装を持つ可能性があり、一般的に使用されます。複数のインスタンス クラスの場合。クラスに何かをさせたいだけで、その呼び出しに固有の状態情報を保存したくない場合は、静的クラスを使用します。インターフェイスは、一般的なオブジェクト指向プログラミングに使用されます。
静的クラスは基本的に、オブジェクトをインスタンス化またはそのオブジェクトを作成せずに使用する場合に使用されます。通常、静的クラスで繰り返し使用される共通関数またはそのような関数を配置することが起こります。それらを単純なクラスに配置すると、クラスオブジェクトが形成されるたびに、その中にあるすべてのものにメモリが割り当てられるため、多くのオーバーヘッドが発生します。そのため、静的クラスを使用してオーバーヘッドを削減します。
そのような比較がないときにインターフェースと比較する場合、要件に依存します。要件が上記のような場合、確かにインターフェースではなく静的クラスを選択しますが、複数のクラスがあり、それらが必要な場合そのようなパターンに従うか、オブジェクトが形成される前にこれらのものを実装する場合、静的クラスよりもインターフェイスを好むでしょう。
さらに、私の関数が一般的であるが、異なるクラスに対応する異なる実装を持っている場合、静的クラスではなくインターフェイスを使用することになります。