Я создаю приложение на основе одной вкладки C++ с использованием инструментария GTK+ и Webkit для обучения. Я создал следующие файлы
Теперь я хочу общаться между панелью инструментов и классом TabView. Поэтому, когда какое-либо событие происходит на панели инструментов, я могу выполнить действие в webview.cpp и некоторый триггер событий из webview. Я могу сделать требуемое на панели инструментов (например, включение/отключение кнопки остановки)
Какую схему проектирования мне нужно выполнить в этом сценарии?
ПРИМЕЧАНИЕ. GTK+ - это библиотека на основе c.
Я хотел бы предложить вам задать неправильный вопрос. Вместо того, чтобы спрашивать, какой шаблон дизайна следует, я бы предложил вам спросить, какой самый идиоматический способ решить вашу проблему.
Слишком часто неудачи проектирования, которые я должен исправить, исходят от молодого кодера, чей подход "какой шаблон проектирования я могу использовать здесь?" Или "Как использовать более шаблоны проектирования".
Изучение шаблонов дизайна полезно в предоставлении лексики для обсуждения ваших проектов, и они полезны для вдохновляющих и информирующих вас о выборе дизайна, но ваш подход к дизайну всегда должен быть "самым простым, чистым, самым эффективным идиоматическим подходом". Иногда ответ на этот вопрос будет шаблоном проектирования. Иногда это будет частью шаблона проектирования, и иногда это будет намного проще - обычно это идиома на языке или библиотеке, с которой вы работаете.
Я не очень много программирую GUI, поэтому я не могу много помочь с вашим конкретным вопросом. Для проблемы, которую вы представляете, это похоже на то, что вы хотите использовать интерфейс GTK signal/slot. В качестве альтернативы вы можете предложить аналогичную функциональность, если хотите познакомиться с инструментами повышения. Оба будут идиоматическими подходами к тому, что вы хотите сделать.
Я думаю, что то, что вы ищете, - это нечто похожее на шаблон наблюдателя: http://sourcemaking.com/design_patterns/observer
и в более общем плане - модели Model-View-Controller или Presentation-Abstraction-Control: http://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller http://en.wikipedia.org/вики /Presentation% E2% 80% 93abstraction% E2% 80% 93control
Возможно, вы захотите также взглянуть на реализацию Qt Signal/Slot: http://qt-project.org/doc/qt-4.8/signalsandslots.html