4

2 つのパッケージに 2 つの列挙型があります。私は一種の「ユニット」アーキテクチャに取り組んでおり、すべてのユニットには独自の列挙型が必要であるため、1000個の列挙型、1000個のパッケージを持つことができます。

結束を最大化するために、すべての定数を同じ列挙型に含めたくありません。

問題は、定数を除いて、すべての列挙型が基本的に同じであることです(各ユニットに固有)

したがって、多くのコードを繰り返す必要がありますが、それはしたくありません (私の列挙型はリスナーを実装し、メソッド ロジックはすべての列挙型でコピー/貼り付けです)。

列挙型拡張パターンをインターネットで調べました。拡張可能な列挙型パターンを見つけました。

それはまさに私が必要とするものではありません。

定数をさまざまなパッケージ、さまざまなユニットに保持するための解決策を見つけようとしていますが、列挙型が拡張できるパッケージ階層の最上位に、一種の抽象クラスが必要です。そうすれば、メソッド ロジックを 1 回だけ記述できます。

列挙型はクラスを拡張できず、インターフェイスのみを実装できることを知っています。

これは、私がやりたい動作していない UML スケッチです。

ここに画像の説明を入力

どうやってやるの?パターンはありますか?

これらの列挙に使用されるメソッドを含むクラスを、いくつかの列挙でどのように拡張できますか? (再利用可能)

編集のヒント:

.values()定数を反復処理する必要があるため、列挙型から使用する必要があります。

4

2 に答える 2

4

効果的なJavaの本から「TypesafeEnum」パターンをチェックしてください。あなたはそれについて読むことができます

http://java.sun.com/developer/Books/effectivejava/Chapter5.pdf

于 2012-06-21T20:17:51.933 に答える
1

クラスまたは列挙型を列挙型で拡張することはできません。ただし、インターフェイスを実装し、インターフェイスのメソッドの実装をヘルパー クラスに委譲することはできます。

于 2012-06-21T21:23:38.850 に答える