この質問は一般的なものかもしれませんが、探していた答えが見つからなかったので、この投稿からいくつかのアイデアを得たいと思っていました. 設計を簡素化するために、一般的に使用されるいくつかのメソッドをヘルパーに移動しようとしています。複数の投稿を見て、ユーティリティ メソッドを静的にするか非静的にするかについて議論しました。私の質問は、静的メソッドと非静的メソッドを組み合わせたヘルパー クラスの作成に関連しています。既存のクラスには静的メソッドと非静的メソッドの組み合わせが含まれているため、複数のクラスでコードを重複させたくないので、移動したいと考えています。そのため、ヘルパー クラスに静的メソッドと非静的メソッドの両方を含めることをお勧めします。私が少し躊躇している理由は、ほとんどのユーティリティ メソッドは本質的に静的であり、ユーティリティ クラスに静的メソッドと非静的メソッドを含めることが適切な設計選択であるかどうかを理解したいからです。助言がありますか??
1458 次
1 に答える
3
クラスが何をしているかによります。
非静的メソッドは、ヘルパー クラスがインスタンスごとに異なる可能性のある状態を維持することを意味します。それがない場合は、すべての静的メソッドを使用することをお勧めします (Java Math または Collections クラスのように考えてください)。
メソッド呼び出し間でインスタンスの状態を維持する必要がある場合は、非静的メソッドが役立ちます。この方向に進む場合、ヘルパー クラスにはヘルパー オブジェクトを作成するコンストラクターまたは静的ファクトリ メソッドがあり、各インスタンスには状態を維持するフィールドがあります。
非静的メソッドは、それ以外の場合は静的メソッドが同じパラメーターを何度も何度も持ち、すべて同じ値/参照である場合にも良い考えです。その場合、これらのコンストラクターのパラメーターを作成し、メソッド間で異なる追加のパラメーターのメソッド パラメーターのみを使用する方がクリーンな場合があります。
于 2015-08-27T17:58:18.633 に答える