У меня есть агрегатный «главный» класс, который содержит некоторые данные, которыми я хочу поделиться.
У основного класса также есть другие участники класса.
Я хочу поделиться данными с этими другими учениками.
Какой правильный / самый лучший способ сделать это?
Конкретный пример, который у меня есть, следующий. Основным классом является .net Form. У меня есть некоторые элементы управления (на самом деле элементы управления в элементах управления) в главной форме, которым нужен доступ к общим данным.
Main Form
- DataX
- DataY
- Control1
-- Subcontrol1
- Control2
-- SubControl2
SubControls 1 и 2 хотят получить доступ к DataX и DataY.
Беда в том, что, как мне кажется, лучшая практика (для уменьшения связи) заключается в том, что либо субконтроли не должны знать о главной форме, либо основная форма не должна знать о субконтролях - возможно, первой.
Для субконтролей, которые не должны знать о главной форме, вероятно, будет означать, что основная форма передает ссылки на оба элемента управления 1 и 2, что, в свою очередь, передает ссылки на субконтроль 1 и 2. Множество строк кода, которые просто пересылают ссылки , Если бы позже я добавил DataZ и DataW, а также элементы управления 3 и 4 и элементы SubControls 3 и 4, мне пришлось бы добавить гораздо больше кода для пересылки ссылок.
Мне кажется проще давать элементам SubControls 1 и 2 ссылки на основную форму. Таким образом, любой субэлемент управления может просто запросить MainForm.DataX или MainForm.DataY, и если я когда-нибудь добавлю новые данные, я могу просто получить к ним доступ напрямую из субэлементов без проблем. Но это все еще включает установку ссылок на элементы MainForm каждый раз, когда я добавляю новый элемент управления или субконтроль. И это дает мне интуитивное чувство «неправильно».
Как вы могли бы сказать, я не доволен ни одним из моих решений. Есть ли лучший способ?
Спасибо