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