Здравствуйте, cupuyc, Вы писали:
C>как-то слышал о концепции, в которой код разделяются на 3 части:
C>1. занимается только отображением графики C>2. занимается только вычислениями C>3. осуществляет взаимодействие первых двух
Model — View — Controller со всеми вариациями. Вообще-то если Вы поищете по RSDN по этим словам — найдёте очень много интересного.
C>Что касается реализации. Допустим есть 3 класса: CAnyUi (гуя), CAnyCtrl (считалка), CAny (должен ими рулить). Допустим CAnyUi ловит оконное сообщение. есть обработчик этого сообщения CAnyUi::on_command(). это сообщение по идее, должен обработать CAnyCtrl. Так вот вопрос — как можно передать это сообщение CAnyCtrl не нарушив данной концепции?
C>1. заюзать множественное наследование: CAny : public CAnyUi, public CAnyCtrl. соответственно появляется возможность на своё усмотрение переопределять метод CAnyUi::on_command() и вызывать соответствующий метод CAnyCtrl.
C>2. добавить в CAnyUi колбек обработчик. то есть на on_command функция, которая уже вызывает соответствующий метод CAnyCtrl.
Однозначно второе (коллбэк). Хотя бы потому, что ничто не должно мешать определить несколько одновременно действующих отображений (например, одно рисует текущую картину, второе — графики изменения, а третье — оповещает о наступлении каждой сотой итерации звонок над головой:) В один класс ты их не впихнёшь.
C>собственно вопрос. может я что-то упускаю? множественное наследование юзать неохота, да и с колбеками как-то криво получится...
С коллбэками — да, их надо творить на каждое действие (функцией-скопом или раздельно — это уже как удобнее), но получится то что надо.