Как правило, у меня есть ситуация, когда заданный объект должен иметь много слушателей. Например, я мог бы
class Elephant {
public void addListener( ElephantListener listener ) { ... }
}
но у меня будет много таких ситуаций. То есть, у меня также будет объект Tiger
, у которого будет TigerListener
s. Теперь TigerListener
и ElephantListener
сильно отличаются:
interface TigerListener {
void listenForGrowl( Growl qrowl );
void listenForMeow( Meow meow );
}
а
interface ElephantListener {
void listenForStomp( String location, double intensity );
}
Я нахожу, что мне всегда нужно постоянно пересматривать механизм вещания в каждом классе животных, и реализация всегда одна и та же. Есть ли предпочтительный шаблон?