Javaで複数のリスナーと複数のイベントタイプを使用してオブザーバー/リスナーパターンを実装しようとしています。各イベント リスナーは、1 つ以上のイベント タイプに関心を持つことができます。
特定のイベントの種類ごとにリスナーを保存し、それらを反復処理する最も効率的な方法は何ですか (おそらくリストのリスト)?
もちろん、スレッドセーフなソリューションが強く推奨されます。
Javaで複数のリスナーと複数のイベントタイプを使用してオブザーバー/リスナーパターンを実装しようとしています。各イベント リスナーは、1 つ以上のイベント タイプに関心を持つことができます。
特定のイベントの種類ごとにリスナーを保存し、それらを反復処理する最も効率的な方法は何ですか (おそらくリストのリスト)?
もちろん、スレッドセーフなソリューションが強く推奨されます。
スレッド セーフ ハッシュ マップにはjava.util.concurrent.ConcurrentHashMapを使用できます。
必要な構造は次のとおりです。
ConcurrentHashMap<EventType,List<Listener>> map;
このようにして、各リスナーは複数のイベント タイプに登録されます。
EventListenerList
おそらくあなたはクラスを探していますか?しかし、私はあなたを誤解しているかもしれません。
EventListenerListを見てください。EventListenerを実装するすべてのリストを保持します。次に、 を呼び出しgetListeners(class)
て type のリスナーを取得できますclass
。