Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как построить взаимодействие между классами?

8.9K
02 мая 2011 года
Apach47
130 / / 14.06.2010
Доброго времени суток.
Нужно реализовать следующую схему


Собственно по картинке:
Верхний менеджер(generalManager) должен согласовывать действия всех менеджеров, которые от него зависят(М1-М3), причем он сам должен реализовывать концепцию паттерна "Одиночка"
Менеджеры второго звена, управляют содержимым ArrayList'ов(добавление, изменение, удаление и т.д.), причем перед добавлением/изменением/удалением объектов из него должны консультироваться с главным менеджером и получать от него либо разрешение выполнить запрошенное действие, либо отказ.

Моя проблема заключается в том, что не я знаю как такое реализовать на C#.

В С++ я просто бы в менеджерах второго уровня создал бы статичную константную ссылку, в которой в конструкторе присваивал бы адрес главного менеджера, а в нем, в свою очередь, ссылку на некий абстрактный класс, от которого бы наследовали менеджеры М1-М3. Но в шарпе, на сколько я понимаю, ссылки есть только в небезопасном коде, который считается там извратом))

Подскажите пожалуйста как такое реализовать именно в C#, какие синтаксические конструкции языка нужно использовать, просто сам только второй день шарп изучаю...

Среда VS 2008
ОС WinXP
1.8K
02 мая 2011 года
LM(AL/M)
332 / / 20.12.2005
в шарпе объектные типы данных это и есть ссылки
8.9K
02 мая 2011 года
Apach47
130 / / 14.06.2010
Цитата: LM(AL/M)
в шарпе объектные типы данных это и есть ссылки



т.е. Вы хотите сказать тогда для связи менеджеров второго уровня с главным, мне в них нужно просто создать инструкцию?

 
Код:
private static GeneralManager gManager;

где GeneralManager - мой тип данных, описывающий главный менеджер

Хм... т.е. при инстанцировании менеджера второго уровня мне нужно будет в вышеуказанную ссылку проводить поверхностное копирование главного менеджера?
2.1K
02 мая 2011 года
Norgat
452 / / 12.08.2009
Цитата:
Хм... т.е. при инстанцировании менеджера второго уровня мне нужно будет в вышеуказанную ссылку проводить поверхностное копирование главного менеджера?



Да. Помоему в любой книжке по C# на первых ~50 стр. можно найти то, что любой тип наследуемый от Object - хранится в куче, а переменная в коде - ссылка на него. Исключением являются структуры и объекты наследуемые от ValueType. Они хранятся в стеке.

8.9K
02 мая 2011 года
Apach47
130 / / 14.06.2010
Цитата: Norgat
Да. Помоему в любой книжке по C# на первых ~50 стр. можно найти то, что любой тип наследуемый от Object - хранится в куче, а переменная в коде - ссылка на него. Исключением являются структуры и объекты наследуемые от ValueType. Они хранятся в стеке.



Да, помню такое.

LM(AL/M), Norgat, спасибо за помощь

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог