|
6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 342
|
||||||
Архитектура для коммуникации объектов03.07.2017, 09:21. Показов 1150. Ответов 12
Метки нет (Все метки)
Здравствуйте!
Есть базовый объект, который является контейнером и хранит в себе другие объекты (модули).
Как это общение корректно и красиво реализовать? Делал так, что каждый модуль при создании получает ссылку на Container, в котором содержится и далее простым get(...) получает другой модуль. Но тут идет взаимная ссылка контейнера на модуль и модуля на контейнер, что мне не очень нравится + приходится инициализировать эту ссылка ну базовый контейнер при создании модуля. Может есть какие то подходы/паттерны, которые дают решение этой проблемы? Буду благодарен за любые ответы!
0
|
||||||
| 03.07.2017, 09:21 | |
|
Ответы с готовыми решениями:
12
Архитектура нейронной сети для детекции черно-белых объектов архитектура процессоров и компьютерная архитектура,Intel32. для первокурсников Протокол для надёжной коммуникации по RS485. |
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 03.07.2017, 10:08 | |
|
Подход что группа связанных модулей хранится в одном массиве - вроде бы оптимальный вариант. Потому что иначе потребуется городить самосинхронизирующиеся массивы в каждом из модулей, что обычно не хорошо, да и независимых групп(контейнеров) модулей может быть несколько. Без взаимных ссылок модуль не сможет определить, к какой именно группе его отнесли.
1
|
|
|
6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 342
|
|
| 03.07.2017, 11:01 [ТС] | |
|
TRam_, Вот интересно, может есть какие то готовые паттерны под такой случай? Чтобы сделать все без "спагетти кода" и со всеми правилами "устава".
0
|
|
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||
| 03.07.2017, 12:25 | ||
|
WINAPI like pattern данный способ любят юзать при разработке виндузятных проектов. Container - обычная глобальная переменная. модули обращаются к нему по имени. и через него получают доступ к другим модулям. 2. система сообщений. объекты могут посылать друг другу сообщения, где бы они ни находились.
1
|
||
|
6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 342
|
|||
| 04.07.2017, 04:35 [ТС] | |||
|
TRam_, Вот интересно, может есть какие то готовые паттерны под такой случай? Чтобы сделать все без "спагетти кода" и со всеми правилами "устава".
Первый вариант слишком некрасивый, на мой взгляд. Не то, что нужно. Второй уже ближе к правде. А можете подробней рассказать, что за система сообщений? Добавлено через 15 часов 40 минут А если передавать через set-метод, то это похоже на логический костыль. friend функции - как какое то нарушение инкапсуляции. То ли я неверно мыслю, то ли действительно это не очень красиво. Как считаете?
0
|
|||
|
зомбяк
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
|
|
| 04.07.2017, 04:43 | |
|
Kertis138, в любом случае в каждом объекте должна оказаться ссылка на массив указателей на модули + он или его должны добавить в массив и удалить из массива при разрушении. Реализовать получение ссылки на массив способов масса - через конструктор, через set-метод или даже через глобальную/статическую переменную.
1
|
|
|
6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 342
|
|||||||||||
| 04.07.2017, 05:38 [ТС] | |||||||||||
|
TRam_,
А корректно при взаимной ссылке в include писать как-то так?: CONTAINER.H
0
|
|||||||||||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
|||||
| 04.07.2017, 05:45 | |||||
|
Добавлено через 6 минут киллер фича систем сообщений: объекты могут обмениваться сообщениями ничего друг о дружке не зная. где бы они ни находились. (некоторые системы сообщений позволяют пересылать сообщения между различными процессами, или даже машинками в интернетах) с технической же точки зрения, там под капотом такое волшебство, что при любых раскладах, накладные расходы будут побольше, чем в первом случае) самые быстрые, что я видел - "статические", когда средства связи разворачиваются времени компиляции, под капотом держат статические контейнеры. так что если вас смущает одна лишняя переменная в объекте, то первый способ - то, что доктор прописал))
1
|
|||||
|
6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 342
|
||
| 04.07.2017, 05:48 [ТС] | ||
|
К примеру есть не один, а несколько контейнеров, которые никак не связаны. Тогда на каждый контейнер нужна своя глобальная переменная, что неудобно из-за разных имен и путаницы. Разве не так?
0
|
||
|
с++
1282 / 523 / 225
Регистрация: 15.07.2015
Сообщений: 2,562
|
|
| 04.07.2017, 05:50 | |
|
1
|
|
|
6 / 6 / 1
Регистрация: 25.02.2016
Сообщений: 342
|
||
| 04.07.2017, 05:52 [ТС] | ||
|
0
|
||
|
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
|
||||
| 04.07.2017, 08:49 | ||||
Сообщение было отмечено Kertis138 как решение
Решениешироко применяемая практика. которые никак не связанны. но путаницы не возникает. не так ли? у глобальных переменных есть свои недостатки. но точно не из-за путаницы имен) а так вообще, любой подход можно изгадить, если подходить к нему бездумно, и фанатично. новичок услышал где то: "о боже! глобальные переменные - это зло!" поверил на слово наивно. а потом начинает так же думать, без понимания причин. красивое и правильное - простое, практичное, не создает проблем ни себе, ни людям. не красивое и не правильное - замороченное решение, вопрос к вам: зачем делать сложно, если можно сделать просто, и получить тот же самый профит? если предполагается, что контейнер может быть только один, используйте глобальную точку доступа (сингелтон или глобальная переменная) если контейнеров может быть множество, сделайте ссылку на родительский контейнер для ребенка. если нужно осуществлять связь между элементами разных контейнеров, ну или необходимо наладить коммуникацию между объектами, которые ничего друг о друге не знают, тогда есть смысл подумать о системе сообщений.
1
|
||||
| 04.07.2017, 08:49 | |
|
Помогаю со студенческими работами здесь
13
В указанном dsn архитектура драйвера и архитектура приложения не соответствуют друг другу
Сети и коммуникации Интерфейс и лаги в коммуникации 3 пути коммуникации в модели TCP/IP Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|