小さなクラスのオブザーバパターン(リスナー)を自分のクラスの1つに導入したいだけで、ベストプラクティスのアプローチを使いたいと思います。Javaのリスナーの正しい(そして最良の)コレクションのタイプ
マイリスナーインタフェース:
public interface ExpansionListener {
void expanded();
void collapsed();
}
したがって、私はリスナー
private List listener; // What kind of list should I take?
と二つの方法addListener(ExpansionListener l)
とremoveListener(ExpansionListener l)
のリストを維持したいです。
今、私の質問:どのようなリストを取る必要がありますか? CopyOnWriteArrayListのような並行リストを使うことを考えましたが、EventListenerListも存在することがわかりました。 Javaのリスナーリストのベストプラクティスアプローチは何ですか?
EventListenerListをあなたが唯一のリスナーのようなものを許可したい場合、私は、 '開始のための'リストを使用すると思います良い候補 –
Sanjeev
のようです。それでは、おそらく 'CopyOnWriteArrayList'を使うでしょう。なぜなら、リスナーへの変更は非常に少ないかもしれませんが、複数のスレッド(あなたのアーキテクチャーについての仮定)だけで書き込みが並行して起こるからです。 – Thomas
オブジェクトが同じ型の複数のリスナーを持つのを防ぐには、 'Set'がより適切です。 – Titus