OberonCore https://forum.oberoncore.ru/ |
|
Базовый Object с HandleMsg https://forum.oberoncore.ru/viewtopic.php?f=23&t=2379 |
Страница 1 из 1 |
Автор: | Илья Ермаков [ Суббота, 20 Февраль, 2010 21:22 ] |
Заголовок сообщения: | Базовый Object с HandleMsg |
Ещё прихожу к выводу о целесообразности наличия в Framework-е самого базового типа Object с процедурой HandleMsg. Для расширяемости на все случаи жизни. Мы на определённом этапе в одном каркасе ввели такой тип, понадобился - и потом себя оправдывает (какие-то общесистемные события через него проходят, и т.п.; любая расширяемость без ломания интерфейсов). В другой задаче тоже возникает такой тип. Так что стоит, видимо. |
Автор: | Info21 [ Суббота, 20 Февраль, 2010 22:47 ] |
Заголовок сообщения: | Re: Предложение по расширению каркаса |
Илья Ермаков писал(а): Ещё прихожу к выводу о целесообразности наличия в Framework-е самого базового типа Object с процедурой HandleMsg. Для расширяемости на все случаи жизни. Я бы не стал торопиться, если "на все случаи жизни". |
Автор: | Илья Ермаков [ Суббота, 20 Февраль, 2010 23:01 ] |
Заголовок сообщения: | Re: Предложение по расширению каркаса |
Вообще, это для решения той проблемы, что обязательно рано или поздно возникают какие-то запросы (события), которые "перпендикулярны" введённым интерфейсам. (Например, выделение объекту "кванта времени" на его нужды). Сообщения тут - то, что "доктор прописал". |
Автор: | Info21 [ Суббота, 20 Февраль, 2010 23:29 ] |
Заголовок сообщения: | Re: Предложение по расширению каркаса |
Это, конечно, постоянно возникающая штука. Но я бы не спешил. Разве есть сообщение, которое нужно разослать ВСЕМ объектам в памяти? Эту темку надо бы в отдельную веточку, что ли. |
Автор: | Илья Ермаков [ Суббота, 20 Февраль, 2010 23:31 ] |
Заголовок сообщения: | Re: Предложение по расширению каркаса |
Да нет, речь ни в коем случае не о какой-то общей шине. Вообще не о механизме, а просто о сигнатуре. О базовом методе. Который бы обязательно и сразу у всех был. Берём за самый базовый тип наш Object - и у всех объектов будет HandleMsg. А когда "гром грянет" - вот он, есть. И не придётся голову ломать, на каком частном уровне его вводить, ломая интерфейсы. |
Автор: | Александр Ильин [ Воскресенье, 21 Февраль, 2010 00:04 ] |
Заголовок сообщения: | Re: Базовый Object с HandleMsg |
Может быть, ввести в ANYREC? : ) |
Автор: | Илья Ермаков [ Воскресенье, 21 Февраль, 2010 00:29 ] |
Заголовок сообщения: | Re: Базовый Object с HandleMsg |
Вообще-то, чисто теоретизируя на будущее... Там ему могло быть место. Как и FINALIZE. HANDLE. И можно оператор типа HANDLE(obj, msg). А obj.HANDLE - implement-only. (чтоб развязочку между операцией посылки сообщения и самим обработчиком иметь). Хотя... Нюансы могут быть, так что лучше не в язык. |
Автор: | Иван Горячев [ Воскресенье, 21 Февраль, 2010 04:39 ] |
Заголовок сообщения: | Re: Базовый Object с HandleMsg |
В случае ББ - только в язык. Потому что иначе весь каркас менять придётся. А тут уж простор. Можно и так: PROCEDURE (o : obj) HandleMsg1 (VAR msg : MessageType), NEW, HANDLER; PROCEDURE (o : obj) HandleMsg2 (VAR msg : MessageType2), NEW, HANDLER; тогда процедуру HANDLE можно будет вообще жёстко заоптимизировать - благо "compiler magic" |
Автор: | Info21 [ Воскресенье, 21 Февраль, 2010 11:25 ] |
Заголовок сообщения: | Re: Базовый Object с HandleMsg |
Иван Горячев писал(а): В случае ББ - только в язык. Потому что иначе весь каркас менять придётся. А тут уж простор. Можно и так: А что там оптимизировать?
PROCEDURE (o : obj) HandleMsg1 (VAR msg : MessageType), NEW, HANDLER; PROCEDURE (o : obj) HandleMsg2 (VAR msg : MessageType2), NEW, HANDLER; тогда процедуру HANDLE можно будет вообще жёстко заоптимизировать - благо "compiler magic" |
Автор: | Иван Горячев [ Воскресенье, 21 Февраль, 2010 11:48 ] |
Заголовок сообщения: | Re: Базовый Object с HandleMsg |
точно не скажу, естественно, но пару-тройку-десяток команд по сравнению с WITH выиграть наверняка можно. А в стандартном обработчике сообщений это должно быть заметно. |
Автор: | Info21 [ Воскресенье, 21 Февраль, 2010 14:59 ] |
Заголовок сообщения: | Re: Базовый Object с HandleMsg |
Се, соображение: пока никакой конкретной функциональности, привязанной к этому Object'у, каркас не предоставляет, его добавление не только совершенно бессмысленно, но и вредно по определению. |
Автор: | Trurl [ Понедельник, 22 Февраль, 2010 17:26 ] |
Заголовок сообщения: | Re: Базовый Object с HandleMsg |
Илья Ермаков писал(а): Ещё прихожу к выводу о целесообразности наличия в Framework-е самого базового типа Object с процедурой HandleMsg. Что-то вроде Objects.Object из Oberon System? |
Автор: | Илья Ермаков [ Понедельник, 22 Февраль, 2010 17:39 ] |
Заголовок сообщения: | Re: Базовый Object с HandleMsg |
Не могу судить; слабо знаком с класс. Оберонами. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |