Как правило, у меня есть ситуация, когда заданный объект должен иметь много слушателей. Например, я мог бы
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 );
}
Я нахожу, что мне всегда нужно постоянно пересматривать механизм вещания в каждом классе животных, и реализация всегда одна и та же. Есть ли предпочтительный шаблон?
