как-то слышал о концепции, в которой код разделяются на 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. собственно вопрос. может я что-то упускаю? множественное наследование юзать неохота, да и с колбеками как-то криво получится...
MVC? Model-view-controller MVC и есть отдельный паттерн, но он как-то на веб направлен. Но тут ещё может подойти Visitor.
ага, MVC. вобщем скажу до чего дошёл. есть модель, типа CAnyModel, контроллер СAnyCtrl и представление СAnyUi. и есть 2 базовых чисто виртуальных класса (интерфейса). CAnyModel : public CAnyModelBase СAnyUi : public CAnyUiBase в CAnyModelBase описаны события на которые может реагировать модель. в CAnyUiBase описаны базовые операции представления. соответственно контроллер имеет указатель на интерфейс CAnyModelBase, модель на CAnyUiBase. контроллер шлёт сообщения базовым методам модели, модель производит вычисления и отправляет результат базовым методам представления.