0

私はクエリを持っていました、私はすべてのメソッドが静的であるクラスを宣言しました、そしてそれはヘルパークラスのように振る舞うというユーティリティデザインパターンに従っています今、そのクラスを列挙型に対応するものと置き換えることができますか、列挙型を持つことができますかその中にすべての staic メソッドがあります。はいの場合、他にどのような利点がありますか..!!

4

2 に答える 2

1

静的メソッドの問題は、テスト用にモックできないことです。少なくとも簡単ではありません。

単一のインスタンスを持つ Enum にメソッドを配置すると、もう少し近づくことができます。列挙型を標準ライブラリでモックできるかどうかはわかりませんが、リフレクションを使用しないと確かにできません。

しかし、列挙型によって実装されたインターフェイスにメソッドを配置し、他のすべての人がそのインターフェイスを使用するだけで、コンストラクター (または必要に応じてセッター) を介してそのインターフェイスのインスタンスを受け入れる場合は、必要に応じて簡単にモックできます。

于 2012-08-19T11:29:22.520 に答える
0

enumはい、をユーティリティ クラスとして使用できます。ただし、多くの利点はありません。つまるところ、制御されていないインスタンス化を防ぐプライベート コンストラクターになります。列挙型はユーティリティ クラスとしてではなく、列挙型に使用されることが期待されるため、プライベート コンストラクターを持つ通常のクラスに固執することをお勧めします。シングルトンに列挙型を使用した場合、それはもう少し意味があります。

于 2012-08-19T12:14:32.570 に答える