Size: a a a

Software Design/Architecture/Zen

2021 January 28

SP

Sergey Protko in Software Design/Architecture/Zen
просто когда ты один (или людей мало) все это не так очевидно в плане профита
источник

I

Ioann_V in Software Design/Architecture/Zen
Ребята, у меня такой вопрос. Есть в разработке event-driven подход - это когда мы при наступлении события, отправляем некое сообщение, которое получаю все те, кто на него подписан. Хорошо, а как бы выглядел ООП код, без такого подхода - можно пример. То есть, скажем, например у нас  пересеклись два объекта и мы что то хотим сделать. Верно я понимаю, что в слуае не event-driven подхода, мы просто должы будем в функцию пересечения передавать некоторые объекты, с которомы что-то должно произойти?

То есть вот, такой код в event-driven:

void some_call(...)
{
   if (...)
       emit event intersected
}

entity_1::intersected()
   to do something

e.t.c

Как бы код выше выглядел без ED подхода?
источник

HH

Human Human in Software Design/Architecture/Zen
Ioann_V
Ребята, у меня такой вопрос. Есть в разработке event-driven подход - это когда мы при наступлении события, отправляем некое сообщение, которое получаю все те, кто на него подписан. Хорошо, а как бы выглядел ООП код, без такого подхода - можно пример. То есть, скажем, например у нас  пересеклись два объекта и мы что то хотим сделать. Верно я понимаю, что в слуае не event-driven подхода, мы просто должы будем в функцию пересечения передавать некоторые объекты, с которомы что-то должно произойти?

То есть вот, такой код в event-driven:

void some_call(...)
{
   if (...)
       emit event intersected
}

entity_1::intersected()
   to do something

e.t.c

Как бы код выше выглядел без ED подхода?
Странный вопрос, а что по твоему происходит когда вызывается emit? И что ты подразумеваешь под ООП кодом?
источник

I

Ioann_V in Software Design/Architecture/Zen
Human Human
Странный вопрос, а что по твоему происходит когда вызывается emit? И что ты подразумеваешь под ООП кодом?
Ну когда emit - метод интерфейса, который entity_1 реализует. И уже работает внутри себя.
источник

I

Ioann_V in Software Design/Architecture/Zen
Таким образом, some_call ничего не знает про entity\
источник

I

Ioann_V in Software Design/Architecture/Zen
но знает только про интерфейс подписчика
источник

I

Ioann_V in Software Design/Architecture/Zen
вот, я так понимаю что это event driven
источник

HH

Human Human in Software Design/Architecture/Zen
Ioann_V
Ну когда emit - метод интерфейса, который entity_1 реализует. И уже работает внутри себя.
Ну типа берем лист, кладем туда подписчиков. Те подписываем их. Далее вызывающая функция проходится по всем подписчиками вызываем туже самую функцию. Это как пример.
Паттерн Медиатор обычно называется. https://refactoring.guru/ru/design-patterns/mediator
источник

I

Ioann_V in Software Design/Architecture/Zen
Human Human
Ну типа берем лист, кладем туда подписчиков. Те подписываем их. Далее вызывающая функция проходится по всем подписчиками вызываем туже самую функцию. Это как пример.
Паттерн Медиатор обычно называется. https://refactoring.guru/ru/design-patterns/mediator
Это будет не event-driven решение?
источник

I

Ioann_V in Software Design/Architecture/Zen
Мне именно пример не event-driven нужен
источник

HH

Human Human in Software Design/Architecture/Zen
Ioann_V
Это будет не event-driven решение?
А фиг знает что ты под event-driven имеешь ввиду. Оч общее понятие.
источник

HH

Human Human in Software Design/Architecture/Zen
Ну можешь функции по порядку вызывать, вот тебе и не event-driven
источник

I

Ioann_V in Software Design/Architecture/Zen
Human Human
Ну можешь функции по порядку вызывать, вот тебе и не event-driven
Да вот я думаю, что не ивент драйвен, это когда мы в
void some_call(...)
{
   if (...)
       emit event intersected
}

Работаем со всем entity - раскрывая их интерфейс
источник

I

Ioann_V in Software Design/Architecture/Zen
то есть не с интерфейсом слушателя работаем, а просто с объектом
источник

I

Ioann_V in Software Design/Architecture/Zen
вот этот момент я и пытаюсь уточнить - как бы это было без event driven
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Ioann_V
Ребята, у меня такой вопрос. Есть в разработке event-driven подход - это когда мы при наступлении события, отправляем некое сообщение, которое получаю все те, кто на него подписан. Хорошо, а как бы выглядел ООП код, без такого подхода - можно пример. То есть, скажем, например у нас  пересеклись два объекта и мы что то хотим сделать. Верно я понимаю, что в слуае не event-driven подхода, мы просто должы будем в функцию пересечения передавать некоторые объекты, с которомы что-то должно произойти?

То есть вот, такой код в event-driven:

void some_call(...)
{
   if (...)
       emit event intersected
}

entity_1::intersected()
   to do something

e.t.c

Как бы код выше выглядел без ED подхода?
так же (emit внутри держит рефы на всех листенеров например).

Разница в том что при полноценном ED не обязательно держать все в одном процессе + не обязательно ждать пока они закончат
источник

I

Ioann_V in Software Design/Architecture/Zen
+ не обязательно ждать пока они закончат

Это про асинхронность?
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Ioann_V
+ не обязательно ждать пока они закончат

Это про асинхронность?
это уже больше про message passing, ED спокойно себя чувствует без всего этого (просто львиную долю профита от подхода теряем)
источник

SP

Sergey Protko in Software Design/Architecture/Zen
Ioann_V
вот этот момент я и пытаюсь уточнить - как бы это было без event driven
ивенты это способ уведомить третью сторону о чем-то не знаю о том кто хочет быть уведомленным. Мол "чет произошло, мне не важно вообще обработает это сообщение кто-то или нет".

"без ивентов" мы просто должны знать кто должен обрабатывать сообщение в целом) но это можно обойти сделав абстрактного ресипиента которы внутри себя все разруливает. Но это те же ивенты
источник

I

Ioann_V in Software Design/Architecture/Zen
Sergey Protko
так же (emit внутри держит рефы на всех листенеров например).

Разница в том что при полноценном ED не обязательно держать все в одном процессе + не обязательно ждать пока они закончат
А типа не в ED - все держится в одном процессе? А можешь показать как?
источник