Ho un'interfaccia - "EventHandler" - che dichiara diversi metodi.Questo è davvero un esempio del modello di adattatore?
public interface EventHandler {
void handleEvent1();
void handleEvent2();
void handleEvent3();
void handleEvent4();
}
Ho anche una classe - "EventHandlerAdapter" - che implementa EventHandler. Tuttavia, in realtà non "implementa" nulla. Il punto è, se un'altra classe vuole implementare EventHandler, ma non tutti i suoi metodi, può semplicemente estendere EventHandlerAdapter e sovrascrivere solo i metodi che vuole.
public class EventHandlerAdapter implements EventHandler {
public void handleEvent1() {}
public void handleEvent2() {}
public void handleEvent3() {}
public void handleEvent4() {}
}
ho visto qualcosa di simile in più di un'occasione. Il nome "EventHandlerAdapter" mi suggerisce che si tratta di un esempio del modello di adattatore ... ma è davvero? Pensavo che il punto di un adattatore fosse tradurre una implementazione esistente in qualcos'altro. Non vedo come questo sia il caso qui.
Se non si tratta di un esempio del modello di adattatore, che cos'è? Sicuramente qualcosa di simile è stato identificato.
sì, la coerenza è una buona cosa;) – Bozho
Dopo aver riflettuto, ho deciso che qualcosa come "AbstractEventHandler" è più appropriato. Potrebbe non essere coerente, ma in realtà l'API Java è addirittura coerente? – someguy
@someguy, il nome Abstract * implica che la classe è 'abstract', quindi deve essere _sostanza_scritta per essere utilizzata. Per esempio. Java Collection Framework contiene diverse classi di questo tipo. Mentre in questo caso, la classe è utilizzabile così com'è, e può essere soggetta a sottoclassi. Quindi per me il nome sarebbe fuorviante. –