powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пятничные нотификации
39 сообщений из 39, показаны все 2 страниц
Пятничные нотификации
    #40020973
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Архитектурный вопрос.

Есть у вас проект.
Есть у вас слой приложения.
Есть у вас слой UI.
Есть у вас слой логики/транспорта/чего-то ещё.

И вот где-то в недрах у вас происходит нечто, что надо отобразить в UI.

Вот прям сейчас в проекте я делал так: приложение управляет объектами, тут же проверяет какие-то их параметры, и если что, то делает отметки в UI.
А потот я решил сделать "правильно" и выкинуть весь этот код из слоя приложения. Потому что уж много там делализаций получается.

То есть было, грубо если, так:
Приложение управляет объектами 1-го уровня, получает от них объекты 2-го уровня, от них 3-го уровня и делает выводы.

Стало:
Приложение работает с объектами 1-го уровня. Объекты любых уровней, если что случилось, собирают нотификацию, отправляют её родителю, он лепит свой id в хвост и отправляет выше, и так далее. Отправка - просто вызов функции с vector<string> ref. На верхнем уровне приложение парсит вектор и делает действия.

Какие есть варианты для такой архитектуры? Этот тоже норм?
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40020975
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В UI строительстве раньше использовался шаблон Document-View.

Сейчас его заменяют на MVC (Model-View-Controller), MVP (Model-View-Presenter),
и MVVM (Не помню расшифровку).

Посмотри какой из них ближе к тебе.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40020991
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbКакие есть варианты для такой архитектуры?

"50 оттенков серого."

Назачем городить такую слоёнку? Каждая подсистема имеет свой интерфейс. Остальные системы
просто используют эти интерфейсы по необходимости. Произошло что-то, требующее "отметки в
UI"? Просто вызови соответствующую функцию UI-шного интерфейса. Что и как она будет делать
внутри - не твоё дело.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40020993
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
То есть было, грубо если, так:
Приложение управляет объектами 1-го уровня, получает от них объекты 2-го уровня, от них 3-го уровня и делает выводы.

Не по ООП.
Надо делить не по уровням а по функционалу.
Умный объект - Карта. Она сама показывает изменения, сама сохраняет настройки в файл если ей дали имя-путь и сама рисует на HDC переданный в параметре.
Тогда приложение управляет умными объектами.
А нотификация или сообщения сами всплывают вверх в каждом объекте таким как карты, список выпадающий, светофор, будильник.
JSОсновной принцип всплытия:

При наступлении события обработчики сначала срабатывают на самом вложенном элементе, затем на его родителе, затем выше и так далее, вверх по цепочке вложенности.
https://learn.javascript.ru/event-bubbling
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021015
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb

Приложение работает с объектами 1-го уровня. Объекты любых уровней, если что случилось, собирают нотификацию, отправляют её родителю, он лепит свой id в хвост и отправляет выше, и так далее.
Отправка - просто вызов функции с vector<string> ref.

Немного не согласен с терминологией.

Нотификация - предполагает месседжинг. Тоесть существование среды где месседж путешествует отдельно от вызвавшего
его процесса или потока.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021018
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMb,


Я в нескольких не-ОО проектах так сделал обработку ошибок.
Событие (ошибка) возвращалась в предыдущий уровень, обобщалась (если код был слишком специализированный), обрастала именами слоев и наверху была похожа на стэк трейс.

Но это синхронный вызов, от первого уровня.
У вас в дизайне есть негласное утверждение что UI наверху, и всем управляет. Синхронно вызывает методы, парсит векторы сообщений и решает что делать дальше.

А если одному объекту, не UI, захотелось получить определенные оповещения?
A если произошло асинхронное событие в недрах?
А если многопоточность? В каком потоке приходят сообщения?
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021019
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQL
UI наверху, и всем управляет

Если такая модель типа клиент-сервер, то сервер не может вызывать и оповещать клиентов.
Только клиенты могут опрашивать сервер - "нет ли что для меня?".
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021020
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PetroNotC Sharp
НеофитSQL
UI наверху, и всем управляет

Если такая модель типа клиент-сервер, то сервер не может вызывать и оповещать клиентов.
Только клиенты могут опрашивать сервер - "нет ли что для меня?".


У клиент-сервера жизненный цикл клиента не совпадает с сервером, там ещё нужен "я новый клиент, дай начальное состояние".

Для программистов винды довольно типично забыть про headless и командную строку, и поставить UI во главе всего взаимодействия компонент.
Это один из подходов, и он может работать.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021021
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQLДля программистов винды довольно типично забыть про headless и командную строку, и
поставить UI во главе всего взаимодействия компонент.

Особенно для программистов Дельфи, которые программируют в основном мышкой. UI модуль,
крутящийся в своём потоке, ничем не хуже и не лучше любого другого модуля, занимающего
свой собственный поток.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021027
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так понимаю что бесполезно обсуждать нотификации UI без понимания устойчивых практик
целевого языка или runtime. Тоесть наличие у нас во главе тех-задания
Delphi. Java/FX/Swing, Windows/MFC/WPF/Qt, Linux/Gnome, Linux/KDE, Generic/Qt
будет оказывать сильное воздействие на реализацию. Даже более
сильное чем нам хотелось-бы.

Как-то так.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021029
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mayton,

Обсуждать можно, советовать вряд ли. Слишком мало известно о проекте. Судя по форуму, проект в с++. Судя по стилю программирования, наверное винда.

Если у ТС вопрос бывает ли так - бывает.

У UI-centric апликух богатая история, они пока никуда не исчезают. У этой архитектуры есть несколько недостатков, некоторые из которых я упомянул в своем первом ответе. Эти недостатки могут быть совершенно несущественными для ТС, если программа остаётся монолитно-однопоточной без внешних функций управления.

Я даже скажу, это правильное решение по умолчанию для большинства приложений с UI.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021030
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov
Особенно для программистов Дельфи, которые программируют в основном мышкой.
далось тебе это дельфи. Там не особо сильно отличается от программирования на Си.

Dimitry Sibiryakov
UI модуль,
крутящийся в своём потоке, ничем не хуже и не лучше любого другого модуля, занимающего
свой собственный поток.

ну да, все мы состоим из атомомов и единиц и нулей.
И сам по себе атом золота ничем не хуже атома Г...
Только это все не относится к теме.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021031
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
да. Я тоже считаю, что архитектуру определяет платформа на которой пишем.
Но ТС обычно всё всё пишет с нуля. Так труднее.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021062
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
В UI строительстве раньше использовался шаблон Document-View.
Он есть, тут вопрос был про сам Document и нотификации внутри него.
Dimitry Sibiryakov
Назачем городить такую слоёнку? Каждая подсистема имеет свой интерфейс. Остальные системы
просто используют эти интерфейсы по необходимости. Произошло что-то, требующее "отметки в
UI"? Просто вызови соответствующую функцию UI-шного интерфейса. Что и как она будет делать
внутри - не твоё дело.
Я неудачно использовал понятие "слой". Давайте я на примере покажу.
У меня есть танк. Есть игра(приложение), которая рулит UI. У танка есть внутренние объекты, типа "оружие", одно из них пушка. Танк едет по полю и собирает ящик с особыми припасами, 20 штук.
Тут надо на UI это отобразить, нарисовать значок и 20. А по мере стрельбы, цифру уменьшать, когда будет ровна нулю, значок убрать.
Как было: игра на каждом шагу лезет в танк, находит у него пушку и в пушен проверяет количество особых припасов - изменяет UI.
Как стало: пушка, когда получает/теряет припасы, собирает нотификацию для танка, танк передаёт её в игру, игра делает отметки в UI.
Т.е. есть иерархия классов, и где-то на нижних уровнях объекты хотят оповестить приложение на самом верху.
PetroNotC Sharp
Надо делить не по уровням а по функционалу.
Умный объект - Карта. Она сама показывает изменения, сама сохраняет настройки в файл если ей дали имя-путь и сама рисует на HDC переданный в параметре.
Тогда приложение управляет умными объектами.
А можно как-то на примере показать? я не совсем понял.
mayton
Нотификация - предполагает месседжинг.
Ну, как бы, да, в общем случае, но тут просто нет очереди, а нотификация сразу приходит в приложение. Я сначала подумал про очередь, а потом подумал - а зачем? Только лишние сложности, функционал, который мне не требуется, а только может всё усложнить. Мне надо только универсальным образом оповестить приложение.
НеофитSQL
А если одному объекту, не UI, захотелось получить определенные оповещения?
A если произошло асинхронное событие в недрах?
А если многопоточность? В каком потоке приходят сообщения?
Нет, у меня всего этого нету. Но первый пункт теоретически возможен, надо будет про это подумать, спасибо.
НеофитSQL
Обсуждать можно, советовать вряд ли.
Ну, кстати, я тему завёл частично для всем поделиться полезными практиками, опытом.
PetroNotC Sharp
Но ТС обычно всё всё пишет с нуля. Так труднее.
Да ну не всегда :) Я стараюсь один раз писать с нуля, потом этот код использовать
А вообще, я вот смотрю на плюсы и на яву, для меня вот загадка, как в яве так получается, что все про все библиотеки знают? А с плюсами не так, я читаю телеграмчик, и там постоянно дают ссылки на какие-то полезные вещи, про которые я вообще не знал.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021067
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Каждый кодер должен хоть раз в жизни написать свои "танчики".
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021076
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMbКак было:
Как стало:
Не вижу разницы. В обоих случаях объекты занимаются тем, что не входит в их круг
обязанностей и лезут туда, куда им не надо.

Но раз ты доволен - всё хорошо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021112
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разработчики game-dev не очень соблюдают философии SOLID.

Для них - задача-прим - гарантировать отсутсвие лагов и чтоб
кеши L1/L2 были прогреты нужными данными.

По сути они - уродуют и калечат красивый код в угоду требованиям капризных
пользователей.

Тоесть на "Кривой Шипилёва" они стоят в зоне разворота когда качество кода
ухудшается в 2 раза ради 5% ускорения алгоритма. И дальше можно
ускорить на 10% ухудшив код в 2000 раз. И так далее. Пока не будет простыня
из ассемблера где нет ни объектов ни RTTI, только чистый конечный автомат.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021119
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonДля них - задача-прим - гарантировать отсутсвие лагов

Насколько я могу судить по современным играм, их задача - выпустить игру хоть как-то. Лаги
и глюки отлавливаются потом да и то если время от подготовки следующего аддона останется.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021126
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
CEMb,

авторКак стало: пушка, когда получает/теряет припасы, собирает нотификацию для танка, танк передаёт её в игру, игра делает отметки в UI.

Если раньше был опрос пушки-объекта, а теперь уведомление от танка-объекта, то особой разницы по-моему нет.

Игра интенсивно экран перерисовывает 30-100фпс, пушка является неотъемлемой частью игры, прятать ее за объектом танка вряд ли полезно.
Синхронные уведомления мало отличаются от опроса, когда выстрел инициируется из UI. В случае с подбираем снарядов (внешнее событие), уведомление выигрывает.

Мое личное мнение что архитектура в смысле ОО улучшилась, эффект на скорость вряд ли заметный.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021129
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
НеофитSQLИгра интенсивно экран перерисовывает 30-100фпс, пушка является неотъемлемой частью игры,
прятать ее за объектом танка вряд ли полезно.

Пушка-объект интерфейса и пушка-элемент игрового мира это два разных объекта,
просчитываемые и обрабатываемые двумя разными модулями независимо. Лично мне так кажется.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021135
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov

maytonДля них - задача-прим - гарантировать отсутсвие лагов

Насколько я могу судить по современным играм, их задача - выпустить игру хоть как-то. Лаги
и глюки отлавливаются потом да и то если время от подготовки следующего аддона останется.

Не знаю о каком геймдеве мы говорим. Но крупно-конторы содержат целый штат
платных тестировщиков которые следят за перформансом игры.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021143
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maytonНо крупно-конторы содержат целый штат платных тестировщиков которые следят за перформансом
игры.

Blizzard и Wizards of the Coast, очевидно, недостаточно крупные конторы. На всё прочее у
меня просто железа не хватает, такой там перформанс.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021148
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я уже лет 10 не играл в десктопные игры. КМК если ты современный
геймер - то надо покупать или XBox или PS4.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021190
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот еще недавно обсуждали.

https://stadia.google.com/

Тут сильное железо не надо. Главное - сетка с низким лагом.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021225
НеофитSQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я помог собрать дочке комп для игр. Уложился а 600, + ещё 600 за видеокарту. Тянет все, 60-120fps.

Дочка довольна, "сама собрала".

Ps5 пока недоступна, дефицит
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021238
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
Как было: игра на каждом шагу лезет в танк, находит у него пушку и в пушен проверяет количество особых припасов - изменяет UI.
Как стало: пушка, когда получает/теряет припасы, собирает нотификацию для танка, танк передаёт её в игру, игра делает отметки в UI.
ты следующий раз в теме пиши. "Игры - хххххх".
Так как игровые архитектуры совершенно отличаются от учетных задач на sql.ru.
Например, на gamedev.ru.
Например, в 3D именно на каждый шаг и каждый раз строится новый каркас игры, вектора для отображения.
То есть, опять таки есть платформа чтобы не с нуля.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021263
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Каждый кодер должен хоть раз в жизни написать свои "танчики".
Да это просто пример был, есть приложение, есть объекты, есть объекты в объектах, надо проинформировать приложение о смене состояния.
Но да, я свои танчики делал, лет 8 назад, было такое. На рсдн-е даже есть видео одного забавного бага про останавливающиеся ракеты. Весёлое было времечко :)
Dimitry Sibiryakov
Но раз ты доволен - всё хорошо.
А если я недоволен, то как надо сделать?
НеофитSQL
Если раньше был опрос пушки-объекта, а теперь уведомление от танка-объекта, то особой разницы по-моему нет.
Код стал удобнее. Приложение пинает только объекты верхнего уровня.
PetroNotC Sharp
ты следующий раз в теме пиши. "Игры - хххххх".
это был пример :) Но, кстати, судя по всему, все любят игры, раз такой интерес сразу.

Меня вообще интересовал паттерн для этой задачи, какой обычно используется?

Ещё раз расскажу:
- Приложение оперирует объектами класса A, класс A содержит объекты класса B, объекты класса B не имеют доступа к Приложению, но должны его информировать о некоторых событиях.
- Вариант 1. Приложение при управлении объектами класса A, само опрашивает дочерние объекты класса B на тему изменения состояния.
- Вариант 2. Объекты класса B в случае изменения состояния, собирают нотификацию и отдают её родительскому объекту класса A, а тот пересылает его Приложению.

Что хорошо, что плохо, как правильно?
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021264
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
надо проинформировать приложение о смене состояния.
не сильно много на себя берет Приложение? Зачем ему тонкости пятого пальца ноги?
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021265
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
Что хорошо, что плохо, как правильно?
выше ссылку давал на пример из js.
Что хорошо там и что плохо?)))
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021266
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb,

ТС работает больше отвечающих. (с)
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021268
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
А можно как-то на примере показать? я не совсем понял.

var карта = Карта(self, hdc) ;
//Теперь карта сама рисует на переданной канве родительского окна.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021281
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
не сильно много на себя берет Приложение? Зачем ему тонкости пятого пальца ноги?
Ну оно ответственное за UI, потому и берёт.
PetroNotC Sharp
выше ссылку давал на пример из js.
Что хорошо там и что плохо?)))
var карта = Карта(self, hdc) ;
//Теперь карта сама рисует на переданной канве родительского окна.
Плохо: карта лезет напрямую в UI. Ей надо знать про UI, она привязана к UI.
Хорошо: можно сделать такое архитектурное решение, в котором объекту нижнего уровня можно привязать объект из UI(не напрямую), чтобы он сам им рулил, когда надо. Совсем хорошо подходит, когда 1:1. У меня 1:1. Поэтому я теперь задумался про изменения в архитектуре. Ну и у этого тоже есть плюсы и минусы. Плюс, что "прикрепил и забыл", не надо больше думать об обновлении. Минусы - надо проводить дополнительные шаги при инициализации, заботиться о том, что UI подходит данному элементу, следить за тем, что будет, когда один из этих двух закончится и так далее.
В JS всё хорошо на вид, ну, собственно, это и есть мой второй вариант, когда объект нижнего уровня начинает отправлять наверх сообщение, оно проходит через всю иерархию, до document.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021296
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
Ну оно ответственное за UI, потому и берёт.
даже в винде за рабочий стол винда ответственна в кавычках. Окна рисуют на самом деле.
CEMb
Плохо: карта лезет напрямую в UI. Ей надо знать про UI, она привязана к UI.

Чем плохо? Вы меняете UI как перчатки? Бросьте.
Выше писали про MVP.
Применяется в андроиде.
Тогда вы не hdc передаете в конструктор, а у вас в
Presenter{
private ссылкаНаViewInterface view;
....
По интерфейсу класс без гуи танк вызывает танк-гуи.
ГУИ может быть любым, лиш бы интерфейс прнимало.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021304
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
если что случилось, собирают нотификацию,
мне кажется надо разделять это "что то случилось" на разные виды событий
- клик мышкой с парам х, у
- рисование объектом на канве
- пришел новый список городов РФ в json
- паттерн Observable наблюдатель возбудился
- системные события Оси.
А вы все отправляете вектором строк?
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021310
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
паттерн Observable наблюдатель возбудился

Упс. В плюсах вместо этого костыль сигналы
https://stackoverflow.com/questions/3185374/observable-container-for-c
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021311
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
По интерфейсу класс без гуи танк вызывает танк-гуи.
ГУИ может быть любым, лиш бы интерфейс прнимало.
Да, согласен, так получается правильнее. Т.е. мне сейчас надо просто из Приложения вырезать кусок, ответственный за UI и оформить отдельно и правильно. Мне такой вариант нравится, спасибо.
PetroNotC Sharp
А вы все отправляете вектором строк?
Пока да(их там не сильно много ещё, и они не так сильно разбросаны по смыслу). Но по сути получается, если разделять - это надо завести иерархию классов для нотификаций, каждому типу нотификаций - свой класс. И для каждого класса нотификации будет удобно срабатывать полиморфизм. Ну да, всё красиво и по науке, но топологически у меня получается на строках тоже самое. Плюс, если у меня появится ещё одна нотификация, мне придётся идти писать ещё один класс. Тогда как в моём варианте (мне можно вообще ничего не писать) надо только добавить ещё одно условие в обработчик. К тому же, в нотификации приходит много текстовой информации, которую всё равно придётся парсить. Если делать иерархию классов, то первый слой распарсится за счёт полиморфизма. А дальше всё так и останется.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021320
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
Да, согласен, так получается правильнее.
в этом случае, по MVP презентер это класс со своим состоянием. То есть полностью повторяет функционал ГУИ объекта но невизуальный.
То есть галка "Пересчитывать в доллары" на самом деле биндится или смотрит на bool пересчитыватьБаксами() метод класса.
MVP
M - model
V - view элементы, активити, фрагменты,...
P - presenter, бизнес логика. В дельфи pas файлы а не dfm
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021326
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CEMb
получается, если разделять - это надо завести иерархию классов
строгая типизация наше всё. Люблю её.
С другой стороны, предают же object, self?
А потом уже клиеет
Button btn = (paramSelf as Button).caption ="fffffff"
А строки не серьезно. Имхо.
...
Рейтинг: 0 / 0
Пятничные нотификации
    #40021341
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
строгая типизация наше всё. Люблю её.
Да я тоже люблю строгую типизацию, но если классов для нотификации становится слишком много, то отношение смысла к количеству кода начинает стремиться к нулю, и ещё вся эта толпа мельтишит в окне проекта. А это я уже не люблю :)
...
Рейтинг: 0 / 0
39 сообщений из 39, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пятничные нотификации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]