Сегодня я обсуждал систему событий Laravel с другим разработчиком. Он упомянул, что диспетчер событий Laravel использует шаблон наблюдателя.
Я всегда думал, что он реализовал шаблон-посредник, поскольку ваши объекты всегда прослушивают / запускают события через объект диспетчера событий, но док говорит, что это наблюдатель.
Event::listen('event.name', function ($foo, $bar) {
//
});
Event::fire("event.name", []);
Разве это не образец посредника?
Я не имею точного представления о том, что конкретно делает Ларавел, и на самом деле, если док говорит, что он построен по схеме наблюдателя, я бы поверил.
Однако ваш вопрос о том, как выглядит код, и по моему опыту я могу легко узнать наблюдателя здесь по аналогии:
Посредник показался бы мне здесь странным, потому что, хотя цель состоит в том, чтобы облегчить связь между некоторыми объектами, я не вижу в этом хорошего способа распространения уведомлений. Я бы определенно сделал ставку на наблюдателя по этой причине.
Других решений пока нет …