2013-04-17 4 views
0

Я хочу иметь ряд подобных дочерних классов (singleletons), полученных из базового класса (абстрактно желательно, поскольку база не требуется создавать). Эти классы детей взаимодействуют друг с другом и, самое главное, я хочу, чтобы они сообщали ссылку на пул конкретных данных (не так много).C#, Хранение/Доступ к общему члену

Это звучит как общий сценарий, но я не уверен, какой был бы лучший дизайн? может быть, мой ум немного расстрелян.

Я не считаю, что это необходимо для того, чтобы сломать общий/общий элемент из структуры класса, но я не уверен, как лучше хранить/получать доступ к нему. Я хотел бы попытаться избежать его, хотя функционально это может иметь смысл.

Любые предложения будут оценены.

+1

Элемент 'static' в' абстрактном классе' должен работать, нет? – leppie

+0

ha перхоть мозга, да, это будет. Но, как упоминалось ниже, использование которых не может быть предпочтительным. Благодаря! – user1297102

ответ

1

Я бы не стал использовать статический, как было предложено. В большинстве случаев я нахожу это плохой практикой (Should you avoid static classes?).

Альтернативой может быть создание класса DataPool (и интерфейса IDataPool) и вставка экземпляра (имеется только один экземпляр) в ваши синглтоны (классы singleton принимают параметр IDataPool).

Этот класс DataPool будет предоставлять все методы, необходимые для взаимодействия с данными пула, и удерживать данные непосредственно. Фактически, он абстрагирует способ доступа к данным и как таковой легко повторно использовать в ваших одноэлементных классах.

Вы можете использовать контейнер IoC для определения срока службы или создать экземпляр где-то еще с помощью нового оператора.

Таким образом, также легко измотать или заменить пул данных (например, в ваших тестах).

+0

Спасибо за предложение и за оформление структуры! и я понимаю, что в программировании, как и в жизни, умеренность является ключевой ;-) – user1297102

Смежные вопросы