In Java lo schema di osservatore è implementato con almeno un'interfaccia (spesso finendo in Listener
o Observer
). Tali interfacce possono essere inserite nidificate all'interno della classe o separate, ad esempio:
public class FooService extends RunnableService {
// Nested interface
public interface Listener {
// ...
}
private Collection<Listener> listeners;
// ...
}
// Separate interface
public interface FooServiceListener {
// ...
}
public class FooService extends RunnableService {
private Collection<FooServiceListener> listeners
// ...
}
Il nome dell'interfaccia nidificata è più lungo di un solo carattere e non deve essere preceduto dal nome della classe per evitare conflitti di nome semplici.
Ci sono altri argomenti a favore o contro una delle due varianti (oltre alle preferenze personali)?