4

これがばかげた質問のように聞こえないことを願っています。

クラス A とクラス B があります。現在、B にあるのは文字列 ID だけです。これで、それぞれがタイプ B の 0 個以上のオブジェクトを持つことができる複数のオブジェクト A を持つことができます。これらは、各クラス A が持つ HashMap(ID,someData) に含まれています。

私がやりたいことは、クラス A に新しい ID を追加するたびに、私が持っている他のクラス A オブジェクトのいずれかに同じ ID を持つタイプ B の on オブジェクトが既に存在するかどうかを確認し、そうでない場合は新しいB オブジェクト。

これが理にかなっていることを願っています。私が尋ねることが何らかの方法で間違っている場合は、これがどのように悪い習慣なのか、概念的に間違っているのかを説明してください.

どうもありがとう。

編集:より明確にするために、私の場合、すべてのオブジェクトの HashMap(ID,someData) を共有することは望ましくありません。たとえば、A がコースクラス、またはカタログ、または銀行などであるとしましょう。各 A クラスは一部の生徒/クライアントを共有しますが、各 A クラスには異なるクラス B オブジェクトが含まれる場合があります。

4

5 に答える 5

4

Instance Manager Patternを実装しているようです。

  • 管理対象オブジェクトの 1 つ以上のインスタンスを (キーを介して) 検索する機能。管理対象オブジェクトが 1 つだけの場合、キーは必要ありません。
于 2012-03-05T10:00:21.823 に答える
0

目的を達成するために、HashMap をstaticインスタンス変数ではなく変数にすることができます。したがって、クラス A のすべてのインスタンスで共有されます。

于 2012-03-05T10:01:47.410 に答える
0

私があなたなら、B_Factory クラスを作成したでしょう。このクラスは、B オブジェクトの作成を担当します。クラス オブジェクトは B_Factory メソッドを呼び出して、B オブジェクトを追加または削除します。B_Factory 内では、Map を使用して B オブジェクトのインスタンスを格納できます。

すべての A インスタンスに注入される B_Factory クラスのインスタンスは 1 つだけである必要があります。

于 2012-03-05T10:05:26.530 に答える
0

これを行う必要があるのは、すべての A オブジェクトのコレクションを用意して、それらすべてをチェックできるようにすることです。より多くの A オブジェクトを取得すると、これはより非効率になります。異なるのは、これを構造化することで、ID をコレクションとして使用することでした。

Map<ID,/* class with A and someData *> map = ...

これにより、すべての A で ID の一意性を確保できます。

于 2012-03-05T10:00:51.980 に答える