powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пятничные нотификации
14 сообщений из 39, страница 2 из 2
Пятничные нотификации
    #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
14 сообщений из 39, страница 2 из 2
Форумы / C++ [игнор отключен] [закрыт для гостей] / Пятничные нотификации
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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