Abbiamo un controllo GUI standard con un gruppo di listener predefiniti come questo:
class OurControl extends Control {
OurControl() {
addMouseWheelListener(new DefaultMouseWheelListener());
}
}
I valori predefiniti sono buoni per i casi d'uso standard, ma ora il cliente desidera utilizzare i propri ascoltatori in alcuni casi. Sto cercando il modo più elegante per farlo.
Idea 1: (mi sembra strano per me e non mi piace mantenere un elenco di listener che potrebbero essere rimossi)
class OurControl extends Control {
MouseWheelListener defaultListener = new DefaultMouseWheelListener();
OurControl() {
addMouseWheelListener(defaultListener);
}
void removeDefaultMouseWheelListener() {
removeMouseWheelListener(defaultListener);
}
}
Idea 2: (Mi piace questo, anche se tecnicamente parlando l'ascoltatore rimane dov'è, almeno segue il modello standard del bean)
class OurControl extends Control {
public boolean enableMouseWheel = true;
OurControl() {
addMouseWheelListener(new MouseWheelListener() {
void mouseWheelMoved(final MouseWheelEvent e) {
if (enableMouseWheel)
doMagic();
}
});
}
}
Quale è un buon modo per raggiungere questo obiettivo?