0

私は次の状況に直面しています。

  • データベースエントリは列挙型に変換されます
  • これらのエントリは、列挙型定数と同じではありません

たとえば、次のエントリがあります。

列挙型にマッピングする必要があるアップルケーキAPPLE_CAKE

したがって、これには、を呼び出す前の文字の置換などが含まれvalueOfます。データベースエンティティをJavaオブジェクトにマッピングしているので、リフレクションを使用してマッピングします。

列挙型フィールドが見つかり、データベース値が読み取られた場合、適切なコンストラクターを呼び出す必要があります。Entity私の現在の解決策は、カスタム静的メソッドを実装するために文書 化したマーカーインターフェイスを使用することfromString(String)です。

このアイデアについて私が気に入らないのは、実装者が静的メソッドを実装することを強制されないことです。だから私は、そのような状況で適用できる適切な作成パターンはないのだろうかと考えていました。

4

1 に答える 1

1

インスタンス作成用のインターフェースを指定するための最良のパターンは、AbstractFactoryPatternです。

EntityFactoryと呼ばれる、または同様の追加のインターフェースを作成します。Entityタイプごとに具体的なファクトリを実装します。これらのファクトリインスタンスを使用して、インスタンスを作成しEntityます。

public interface EntityFactory<T extends Entity>
    T create(String str);
}
于 2012-08-24T20:40:00.150 に答える