すべてのメソッドが静的であることがわかったJavaクラスを調べていました。要件があるのはいつか、すべてのメソッドの前に静的のプレフィックスを付ける必要があるときに条件が発生する場所を知りたいのです。どんなデザインパターンですか..?
4 に答える
これは通常、ユーティリティクラスで使用されます。たとえば、数学のクラスを考えてみてください。Math.min
最小2つの数値を計算するためにオブジェクトのインスタンスは必要ないため、静的メソッドであることは理にかなっています。
ただし、静的メソッド/フィールドの使いすぎは、必ずしも良い設計手法ではありません。
正確に:ユーティリティパターン
ヘルパークラスは通常、静的のみのメソッドを提供します。これらは、1種類のオブジェクトだけに固有ではなく、プロジェクト全体で共有できるいくつかのメソッドを提供するクラスです。たとえば、MathHelperは、float値の配列の平均を計算するためのメソッド、2点間の距離を計算するためのメソッドなどを定義できます。
すべての静的メソッドを持つクラスは、以下の目的で使用されます。
1)JoshuaBlochEffectiveJavaからコピー
インターフェイスは静的メソッドを持つことができないため、慣例により、Typeという名前のインターフェイスの静的ファクトリメソッドは、Typesという名前のインスタンス化できないクラス(アイテム4)に配置されます。たとえば、Javaコレクションフレームワークには、コレクションインターフェイスの32の便利な実装があり、変更不可能なコレクション、同期されたコレクションなどを提供します。これらの実装のほぼすべては、1つのインスタンス化できないクラス(java.util.Collections)の静的ファクトリメソッドを介してエクスポートされます。返されるオブジェクトのクラスはすべて非公開です。
2)@tgoossensによって提案されたユーティリティパターン