Как поделиться настройками глобальных приложений с объектами-членами? - PullRequest
0 голосов
/ 14 сентября 2010

Я работаю над приложением типа панели инструментов. Мой текущий план заключается в создании класса «панель инструментов» и класса «кнопка». Класс панели инструментов будет создавать экземпляр «кнопки» для каждого элемента на панели инструментов. Каждый экземпляр класса «button» будет обрабатывать события GUI своей кнопки (Mouse Over, Click и т. Д.). Я также хочу иметь глобальные параметры, которые будут влиять на то, как обрабатываются эти события GUI (выделение определенным цветом при наведении курсора и т. Д.). Моя проблема в том, что я не уверен, как дать каждому экземпляру «знать», каковы текущие значения для глобальных параметров.

Какой хороший способ справиться с этим? Одна мысль, которая у меня есть, - создать класс «Опции», создать его единственный экземпляр в классе основной панели инструментов, а затем передать ссылку на класс кнопки в его конструкторе.

1 Ответ

0 голосов
/ 14 сентября 2010

Собрать все опции в классе Options, по сути, вполне нормально.

Если по другим причинам кнопкам нужно знать, на какой панели инструментов они находятся, они сохранят ссылку (для справки читайте «указатель» в C ++, в случае, если она должна быть перезагружаемой ;-) на родительскую панель инструментов, и простой метод доступа только для чтения в классе панели инструментов для возврата ссылки / указателя на объект общих параметров был бы лучше с многих точек зрения (например, способность быстро переключаться с одного набора параметров на другой, просто переключая один параметр). указатель [[или ссылка]] на панели инструментов).

Но если кнопки не нуждаются в какой-либо ссылке на их панель инструментов создателя, я бы не добавил ее (циклическая зависимость, если на панели инструментов также необходимо сохранять ссылки на кнопки) только для этой цели.

Скорее, если вы уверены, что "может быть только одна" (все кнопки на всех панелях инструментов используют одинаковые параметры), статический метод в классе панели инструментов (опять же, с простой целью возврата ссылки на " один-единственный "объект опций) будет достаточно.

Мне нравится идея «проходить через панель инструментов» (в зависимости от обычного или статического метода), вместо того, чтобы заставлять каждую кнопку добавлять количество состояний, необходимое для отдельной ссылки на «один и единственный объект опции». ». Конечно, паттерн Singleton является еще одной аналогичной альтернативой (например, через статический метод в классе Options ), но у меня есть некоторая антипатия к этому DP в принципе, поэтому я бы предпочел " перейти через панель инструментов "...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...