Ich möchte nur ein kleines Beobachtermuster (Listener) in einer meiner Klassen einführen, und ich möchte den Best-Practice-Ansatz verwenden.Korrekter (und bester) Sammlungstyp für Listener in Java
Meine Zuhörer Schnittstelle:
public interface ExpansionListener {
void expanded();
void collapsed();
}
Deshalb möchte ich
eine Liste der Zuhörer haltenprivate List listener; // What kind of list should I take?
und zwei Methoden addListener(ExpansionListener l)
und removeListener(ExpansionListener l)
.
Jetzt, meine Frage: Welche Art von Liste sollte ich nehmen? Ich dachte über eine gleichzeitige Liste wie CopyOnWriteArrayList, aber ich fand heraus, dass auch EventListenerList existiert. Was ist der Best-Practice-Ansatz für Listener-Listen in Java?
eventListenerList scheint – Sanjeev
ein guter Kandidat zu sein, ich 'Liste verwenden würde' für einen Start, wenn Sie diese Art von Zuhörer zulassen möchten. Dann würde ich wahrscheinlich mit "CopyOnWriteArrayList" gehen, da Änderungen an den Listenern wahrscheinlich recht selten sind, aber Schreibvorgänge parallel von mehreren Threads ausgeführt werden können (nur Annahmen über Ihre Architektur). –
Thomas
Ein 'Set' ist besser geeignet, um zu verhindern, dass ein Objekt mehrere Listener desselben Typs hat. – Titus