Re: разделение кода на графику и управление
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 26.07.09 10:22
Оценка:
Здравствуйте, 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>собственно вопрос. может я что-то упускаю? множественное наследование юзать неохота, да и с колбеками как-то криво получится...


С коллбэками — да, их надо творить на каждое действие (функцией-скопом или раздельно — это уже как удобнее), но получится то что надо.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.