1

C#やJavaなどのプログラミング言語は、オブジェクト指向であるにもかかわらず、静的メソッドを備えています。

パフォーマンスや利便性の理由で静的メソッドが使用される場合が多いことは承知していますが、静的メソッドを使用しないと解決できない実際のコーディングの問題があるのではないかと思います。

ここで名前が付けられる一般的なケースのいくつかは、静的ではなく、単なる「通常の」メソッドである可能性があると思います。

  • main : mainメソッドの目的は、プログラムの最初に実行されるスレッドを作成して開始することです。したがって、これはThreadクラスから派生したオブジェクトである可能性もあります。
  • ロガー:ロガーの実装では、静的メソッドを使用することがよくあります。同じインターフェースでロガーを別のロガーと交換したいと思うかもしれないので、その点はわかりません
  • 数学:数学関数は一見静的メソッドの完璧な候補のように見えますが、数学ライブラリを別のライブラリと透過的に交換したい場合があります(つまり、sin()関数でより多くのパフォーマンスが必要な場合)アプリケーションにとって精度が重要でない場合は、より高速で精度の低いアルゴリズムを使用した実装を使用することをお勧めします)
  • シングルトン:多くの人から悪い習慣と見なされています。インスタンスが1つだけ必要な場合は、実際にインスタンスを1つだけ作成することを検討してください。

では、静的メソッドが本当に絶対に必要な場合はどうなるでしょうか。

4

1 に答える 1

1

IMO、静的メソッドは、サブタイプの選択がこの静的ファクトリ メソッドへの入力に依存し、クライアントから隠されている特定のタイプのさまざまなサブタイプのオブジェクトを作成するためにファクトリを定義するときに必要です。

Logger の例は、実際のロガーが必要なパッケージ/クラスに基づいて決定されるこのカテゴリに実際に分類されます (もちろん、Logger の他のファクトリ メソッドは、他のパラメーターを使用して、返される適切な Logger インスタンスを決定します)。

于 2012-10-17T16:22:04.323 に答える