Как грамотно послать сообщение "наверх" ?
От: DoK_ToP Россия  
Дата: 23.04.07 12:57
Оценка:
Вот есть, например такая "пирамида": класс А включает в себя объекты класса В, В вкл в себя объекты класса С, С включает в себя объекты класса D. Как грамотно и по-научному послать сообщение от объекта класса D "наверх" к объекту класса А(например, если у D что-то произошло, то он должен тут-же оповестить об этом A)? За время обдумывания проблемы появилась лишь по-моему не очень удачная идея вызвать из D глобальную функцию, которая вызовет соответствующий метод A... Подразумеваю, что можно помудрить с сообщениями, но каких-то конкретных мыслей нет
Буду признателен, если подкините идеи, как это осуществить! Заранее благодарю!
... согласно пророчеству
Re: Как грамотно послать сообщение "наверх" ?
От: ak_miass Россия  
Дата: 23.04.07 13:30
Оценка:
Здравствуйте, DoK_ToP, Вы писали:

Ну например сделать все классы наследниками одного класса с методом SendMessage и свойством Parent. При необходимости сигналим Parent-у, в Parent-е проверяем есть ли более верхний Parent и сигналим дальше. Вот и всё
Re: Как грамотно послать сообщение "наверх" ?
От: Аноним  
Дата: 23.04.07 13:35
Оценка:
паттерн Publisher — Subscriber
Re[2]: Как грамотно послать сообщение "наверх" ?
От: 1234  
Дата: 23.04.07 13:39
Оценка:
Здравствуйте, Аноним, Вы писали:

А>паттерн Publisher — Subscriber

Или Abstract Mediator, в зависимости от ориентации
Re: Как грамотно послать сообщение "наверх" ?
От: rg45 СССР  
Дата: 23.04.07 13:41
Оценка:
Здравствуйте, DoK_ToP, Вы писали:

DK_>Вот есть, например такая "пирамида": класс А включает в себя объекты класса В, В вкл в себя объекты класса С, С включает в себя объекты класса D. Как грамотно и по-научному послать сообщение от объекта класса D "наверх" к объекту класса А(например, если у D что-то произошло, то он должен тут-же оповестить об этом A)? За время обдумывания проблемы появилась лишь по-моему не очень удачная идея вызвать из D глобальную функцию, которая вызовет соответствующий метод A... Подразумеваю, что можно помудрить с сообщениями, но каких-то конкретных мыслей нет

DK_>Буду признателен, если подкините идеи, как это осуществить! Заранее благодарю!

Для этого удобно использовать boost::signal. С помощью этого механизма класс D может определять внутри себя событие. На это событие могут вешать свои обработчики все классы, "знающие" об объектах класса A. В определенный момент объект класса A просто вызывает данное событие, не интересуясь тем, сколько и какие обработчики на это событие подписаны.
--
Справедливость выше закона. А человечность выше справедливости.
Re[2]: Как грамотно послать сообщение "наверх" ?
От: rg45 СССР  
Дата: 23.04.07 13:48
Оценка:
Здравствуйте, rg45, Вы писали:

R>Здравствуйте, DoK_ToP, Вы писали:


DK_>>Вот есть, например такая "пирамида": класс А включает в себя объекты класса В, В вкл в себя объекты класса С, С включает в себя объекты класса D. Как грамотно и по-научному послать сообщение от объекта класса D "наверх" к объекту класса А(например, если у D что-то произошло, то он должен тут-же оповестить об этом A)? За время обдумывания проблемы появилась лишь по-моему не очень удачная идея вызвать из D глобальную функцию, которая вызовет соответствующий метод A... Подразумеваю, что можно помудрить с сообщениями, но каких-то конкретных мыслей нет

DK_>>Буду признателен, если подкините идеи, как это осуществить! Заранее благодарю!

R>Для этого удобно использовать boost::signal. С помощью этого механизма класс D может определять внутри себя событие. На это событие могут вешать свои обработчики все классы, "знающие" об объектах класса D. В определенный момент объект класса D просто вызывает данное событие, не интересуясь тем, сколько и какие обработчики на это событие подписаны.


В предыдущем тексте опечатки — исправления выделены жирным.
--
Справедливость выше закона. А человечность выше справедливости.
Re: Благодарю всех за ответы, буду пробовать! :-)
От: DoK_ToP Россия  
Дата: 23.04.07 13:56
Оценка:
... согласно пророчеству
Re: Как грамотно послать сообщение "наверх" ?
От: grig_arsh  
Дата: 25.04.07 05:08
Оценка:
Здравствуйте, DoK_ToP, Вы писали:

DK_>Вот есть, например такая "пирамида": класс А включает в себя объекты класса В, В вкл в себя объекты класса С, С включает в себя объекты класса D. Как грамотно и по-научному послать сообщение от объекта класса D "наверх" к объекту класса А(например, если у D что-то произошло, то он должен тут-же оповестить об этом A)? За время обдумывания проблемы появилась лишь по-моему не очень удачная идея вызвать из D глобальную функцию, которая вызовет соответствующий метод A... Подразумеваю, что можно помудрить с сообщениями, но каких-то конкретных мыслей нет

DK_>Буду признателен, если подкините идеи, как это осуществить! Заранее благодарю!

Ochen udobno sdelat nasledovanie, i v nasledovannom classe derjat private pointer bazogogo classa.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.