правильный подход к обработке событий.

Тема в разделе "LANGS.C", создана пользователем cupuyc, 26 июл 2009.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    как-то слышал о концепции, в которой код разделяются на 3 части:

    1. занимается только отображением графики
    2. занимается только вычислениями
    3. осуществляет взаимодействие первых двух

    Что касается реализации. Допустим есть 3 класса: CAnyUi (гуя), CAnyCtrl (считалка), CAny (должен ими рулить). Допустим CAnyUi ловит оконное сообщение. есть обработчик этого сообщения CAnyUi::on_command(). это сообщение по идее, должен обработать CAnyCtrl. Так вот вопрос - как можно передать это сообщение CAnyCtrl не нарушив данной концепции?

    1. заюзать множественное наследование: CAny : public CAnyUi, public CAnyCtrl. соответственно появляется возможность на своё усмотрение переопределять метод CAnyUi::on_command() и вызывать соответствующий метод CAnyCtrl.

    2. добавить в CAnyUi колбек обработчик. то есть на on_command функция, которая уже вызывает соответствующий метод CAnyCtrl.

    собственно вопрос. может я что-то упускаю? множественное наследование юзать неохота, да и с колбеками как-то криво получится...
     
  2. Ox8BFF55

    Ox8BFF55 New Member

    Публикаций:
    0
    Регистрация:
    11 июл 2009
    Сообщения:
    181
    потерны проектирование
    Выбирайте на свой вкус!(может быть observer)
     
  3. W4FhLF

    W4FhLF New Member

    Публикаций:
    0
    Регистрация:
    3 дек 2006
    Сообщения:
    1.050
    MVC?

    Model-view-controller

    MVC и есть отдельный паттерн, но он как-то на веб направлен.

    Но тут ещё может подойти Visitor.
     
  4. maksim_

    maksim_ New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2009
    Сообщения:
    263
    ага, MVC. вобщем скажу до чего дошёл. есть модель, типа CAnyModel, контроллер СAnyCtrl и представление СAnyUi. и есть 2 базовых чисто виртуальных класса (интерфейса).

    CAnyModel : public CAnyModelBase
    СAnyUi : public CAnyUiBase

    в CAnyModelBase описаны события на которые может реагировать модель. в CAnyUiBase описаны базовые операции представления. соответственно контроллер имеет указатель на интерфейс CAnyModelBase, модель на CAnyUiBase. контроллер шлёт сообщения базовым методам модели, модель производит вычисления и отправляет результат базовым методам представления.