Pull to refresh
88
0

User

Send message
Ну что Вы так сразу «ну а для нормальных людей». У Вас вон вообще, аватар — шоколадка)
evenement/evenement все же не классическая реализация наблюдателя. все же наблюдатели привязываются к событию. но суть та же.
Мой комментарий был по поводу evenement/evenement, которая является классической реализацией шаблона «Наблюдатель». В этой библиотеке все наблюдатели хранятся внутри наблюдаемого объекта, а не в диспетчере. Посмотрите реализацию.

Про диспетчер Вы, наверное, имели в виду symfony event dispatcher. Там согласен, маппинг объект.сигнал -> объект.слот хранится в диспетчере.
Это ведь реализация шаблона «Медиатор». Я вот только что осознал, что сигналы и слоты — больше «Медиатор», чем «Наблюдатель». Так как возможны соединения не только один к одному, но и многие ко многим.
ответ простой — для наглядности. У Вас в классе может быть множество методов и лишь для того, чтобы среди этого множества выделить те методы, которые могут использоваться в качестве слотов, используется «ключевое» слово «slot». Не более. Конечно, технически в этом никакой необходимости нету.
Спасибо, не видел. Подход почти такой же. С одним различием, что там классический «Наблюдатель», где наблюдаемый объект содержит в себе список всех наблюдателей. В сигналах и слотах маппинг объект.сигнал -> объект.слот не хранится в наблюдаемом объекте.

Очень похожа) И судя по всему очень популярна. Ну, хотя бы мой спортивный интерес удовлетворен.
Переписал на трейте. Обновлен пункт 1
По поводу сигнатуры. Что в ней такого страшного? Вроде бы все логично и интуитивно понятно: сигнал от отправителя соединяется со слотом получателя.

По поводу соединений — посмотрите тесты. Как указал webmasterx будет несколько последовательных вызовов ConnectionManager::connect().

По поводу применения. Вначале статьи я писал, что сигналы и слоты отлично подходят для gui приложений с event loop. Там они смотрятся на своем месте. Что же касается реального применения в скриптовом php: сигалы и слоты можно использовать там, где подходит наблюдатель. Например выполнить действие перед сохранением сущности. Или же (о боже мой максимализм) переписать старый процедурный подход в приложении с хуков на сигналы.

Вообще, конечно же, just for fun. Узнал как пишутся composer пакеты.
по сути Signal класс должен называться Signalable, тогда проблема с восприятием отойдет. Но так только интерфейсы принято именовать. Поэтому оставил Signal. Наверное, самый верный вариант в моем случае — это трейт.

И в Qt сделано не так, не надо плохо о нем думать)
Верно. Поспешил я с ответом.
Действительно. Если иерархия уже имеется, то абстрактный класс не очень удобен. С трейтом идея нравится.
Никак и не реализовать такое поведение на сигналах. Хм. Можете привести реальный пример, когда такое поведение необходимо?
Говорят, если в рекламном ролике мелькает продукция эпл, то рекламируемая вещь продается на 23,77% лучше.
Теперь воры в Италии будут ходить со своими сиденьями
Прочитайте внимательно. Я сказал, что это лучшее объяснение, которое я встречал. Поэтому я ссылаюсь на автора этой иллюстрации. То есть я не претендую на авторство. Как Вам ещё объяснить?
У Вас есть фотоаппарат? Зачем? Вам свои фото обязательно? Скачайте в интернете, там много.
У Вас камера/телефон видео в gif снимает?) Смысл не в том, чтобы из каких-то гифок в интернете делать фото. А в том, чтобы из своих видео делать фото.
То есть сначала конвертировать видео в gif, а потом плагином сделать фото. Смысл в этом промежуточном шаге? Плагин ради плагина.

Information

Rating
Does not participate
Registered
Activity