|
87 / 55 / 15
Регистрация: 01.10.2010
Сообщений: 492
|
|||||||||||
Передача обработчиков событий в конструктор26.02.2016, 09:29. Показов 1780. Ответов 15
Метки нет (Все метки)
Можно ли передавать обработчики событий в конструктор как параметры, если да, то как?
Более общая задача. Есть операция, которая длится большой промежуток времени, но её можно разбить на мелкие стадии. Пользователю надо сообщать о прогрессе. Идея такая: на стороне бизнес-логики в класс добавил функционал, чтобы метод (хотя более уместен термин "некая операция"), мог сообщать клиенту о своём прогрессе. Реализовал так. Бизнес-логика.
P.S. Если кто-то предложит более простую идею/реализацию буду благодарен
0
|
|||||||||||
| 26.02.2016, 09:29 | |
|
Ответы с готовыми решениями:
15
Несколько обработчиков событий Динамическая создание обработчиков событий Отлов событий webBrowser, отваливаются часть стандартных обработчиков. |
|
|
||
| 26.02.2016, 12:15 | ||
|
1
|
||
|
|
|||||||
| 26.02.2016, 18:55 | |||||||
Единственное что должен реализовать ваш BL объект - это событие типа ProgressChanged, что бы внешний слой мог подписаться на него и узнавать прогресс выполнения. Но BackgroundWorker в BL создаваться не должен. ИМХО.
1
|
|||||||
|
87 / 55 / 15
Регистрация: 01.10.2010
Сообщений: 492
|
||||
| 27.02.2016, 14:14 [ТС] | ||||
|
Пользователь хочет видеть прогресс и чихать ему на то, что не может быть реализовано это, потому что в БЛ что-то быть не должно.
Добавлено через 2 минуты А если такая ситуация. Есть несколько долгих операций и они используют поля одного класса и по логике с ним связаны. Тогда что бы сделали?
0
|
||||
|
|
||
| 27.02.2016, 17:10 | ||
|
Если они являются одним логическим блоком и должны выполняться одна за другой, тогда бы просто определил их в разных методах и вызывал их последовательно в методе OnDoWork().
0
|
||
|
87 / 55 / 15
Регистрация: 01.10.2010
Сообщений: 492
|
|
| 29.02.2016, 12:40 [ТС] | |
|
Нет, они не являются одним логическим блоком
0
|
|
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
||
| 29.02.2016, 13:41 | ||
|
0
|
||
|
|
|
| 29.02.2016, 13:49 | |
|
0
|
|
|
Master of Orion
|
|
| 29.02.2016, 13:51 | |
|
insite2012, ну так кроме наследования есть еще и композиция. Я тоже не вижу смысла переопределять OnDoWork, когда есть удобное событие. А переопределять дефолтное поведение этого класса мне кажется неправильным. Можно потом отхватить. Ну и логично, когда свой класс предоставляет 2-3 нужных метода, а у BackgroundWorker миллиард всяких методов и свойств, которые вызывающему коду не нужны, а может и вообще ломают внутреннюю логику обработки.
0
|
|
|
|
||
| 29.02.2016, 14:01 | ||
![]() Ну а по сути, кому как удобно (выше уже об этом говорилось). Когда нужно быстро и без особых хлопот - мне так подходит.
0
|
||
|
Master of Orion
|
|
| 29.02.2016, 14:11 | |
|
insite2012, Argumentum ad verecundiam - не катит. Наследование - достаточно старая концепция, и её придерживаются просто по привычке. Ну и иногда она лучше. Но когда тащится АПИ чужого класса, чтобы запрограммировать поведение своего - это явно неправильно
0
|
|
|
|
||
| 29.02.2016, 14:18 | ||
|
И это касается не только приведенного примера, а и всего остального. Возьмем любой контрол, если мне нужно изменить его поведение (не все, а часть) - мне писать полностью свой? Зачем мне тратить время на то, что уже реализовано, когда можно взять то что есть и использовать. Давайте напишем свой ЯП, свой компилятор, свою IDE, в конце концов. Зачем нам поделки Microsoft? Но вот они-то как раз в FCL наследование очень широко используют. Они не правы? Бродят в потемках и ждут, когда им откроют глаза на то, как лучше?
0
|
||
| 29.02.2016, 14:20 | ||
|
Не по теме:
Наследование - инструмент, и очень удобный. Лично я им пользуюсь когда надо расширить функционал нужного мне класса. Да, далеко не всегда в этом есть необходимость, но заявлять что наследование устарело и им не надо пользоваться как-то неправильно.
0
|
||
|
Master of Orion
|
||
| 29.02.2016, 14:32 | ||
aquaMakc, наследованием чаще злоупотребляют, чем наоборот. Грамотная композиция почти всегда лучше грамотного наследования (см. проблему хрупких базовых классов), вопрос только в поддержке со стороны языка. Ну и да, ООП не панацея Сейчас ООП на вершине, однако кто помнит, когда оно появилось и в каком языке? Правильно, в
Кликните здесь для просмотра всего текста
Smalltalk
Кликните здесь для просмотра всего текста
бородатом конце 70х
0
|
||
|
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
|
|
| 29.02.2016, 14:47 | |
|
Любой инструмент надо применять к месту. Если мне надо добавить 1-2 свойства к базовому классу - мне проще воспользоваться наследованием. Если мне надо прокачать логику объекта на основании имеющегося функционала я подумаю об агрегировании.
0
|
|
|
Master of Orion
|
|
| 29.02.2016, 15:32 | |
|
aquaMakc, полностью с этим согласен
Точно также не стоит лепить ООП из 100500 объектов там, где нужно просто сделать пару функций ![]() Кстати еще немного в тему ругательств. Лишь не так давно начал понимать, о чем они. Хотя сейчас кажется очевидным Котоморфизм вообще отличное слово
0
|
|
| 29.02.2016, 15:32 | |
|
Помогаю со студенческими работами здесь
16
Передача параметра в конструктор Передача в конструктор ссылки на объект Наследованием и передача параметров в конструктор Применение делегатов в качестве обработчиков событий Применение делегатов в качестве обработчиков событий Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|