|
|
|||||
[+1 25.03.12]
Регистрация: Jul 2009
Сообщений: 22
|
Глобальные переменные и ООП
Наверное глупый вопрос, но всё же.
Где правильно с точки зрения ООП хранить переменные, которые используются большинством классов, на протяжении всего приложения? Допустим есть класс, в котором содержится 10 других классов и 3 переменные, которые всем этим классам будут нужны: class MyClass } var val1: int; var val2: int; var val3: int; var obj1: SomeClass1; var obj2: SomeClass2; var obj3: SomeClass3; .... var obj10: SomeClass10; } класса MyClass может быть несколько, с разными значениями val1 - val3. Сейчас я не придумал ничего лучше, как передавать переменные в конструктор каждого класса, но это очень неудобно и замусоривает код. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Непонятно, при чем здесь ООП и глобальные переменные.
Объясните, чего Вы хотите и что не получается.
__________________
Reality.getBounds(this); |
|
|||||
[+1 25.03.12]
Регистрация: Jul 2009
Сообщений: 22
|
Я хочу понять, где правильно хранить переменные, которые по всем своим признакам выглядят как глобальные. Получаться то всё получается, но явно идеологически не выдержано передавать
классам глобальные переменные в конструкторах, чтобы те в свою очередь передавали их другим, вновь созданным. Должен быть какой-то более элегантный способ. |
|
|||||
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Цитата:
Добавлено через 2 минуты Нет ничего элегантней умного и осведомленного директора, дающего четкие указания исполнительной и следящей за собой секретарше, не сующей нос в его дела, Вы не находите? Разве что умный, интеллигентный кавалер, наливающий даме шампанское? Если дама перед этим наклюкалась где-то на стороне глобально доступного пивка, элегантность ситуации несколько омрачается.
__________________
Reality.getBounds(this); Последний раз редактировалось Wolsh; 24.03.2012 в 23:44. |
|
|||||
[+1 25.03.12]
Регистрация: Jul 2009
Сообщений: 22
|
Цитата:
Мой мозг, испорченный ассемблером, ищет ответ, что есть правильно, с точки зрения ООП. Добавлено через 13 минут Чтоб не быть голословным, приведу простой пример. Есть суперкласс, который создает экземпляр BitmapData и определяет его ширину и высоту. И того имеем три переменные. Далее в классе создаётся куча других классов, которые так или иначе работают с BitmapData. Рисуют в него, копируют и т.п. Им всем нужен доступ к width, height и bmp. Более того, в каждом из этих классов могут быть созданы другие классы, которое тоже захотят работать c этим битмапом. Вопрос: правильно ли будет всем создаваемым классам передавать эти переменные в конструкторе (или других методах). Или можно объявить их как статические, но тогда как быть, если экземпляров суперкласса будет два? |
|
|||||
Регистрация: Jan 2012
Сообщений: 35
|
Сама идеология классов в AS cодержит очевидный ответ на Ваш вопрос. Передавать правильно ( и чаще всего именно в конструкторе, ) но не все параметры, а лишь ссылку на объект родитель.
|
|
|||||
[+1 25.03.12]
Регистрация: Jul 2009
Сообщений: 22
|
Цитата:
в комнате есть шкаф, в шкафу есть книга, в книге есть закладка и закладка будет знать про комнату? |
|
|||||
Регистрация: Sep 2010
Адрес: Ростов-на-Дону
Сообщений: 369
|
Нет, это не нормально как правило с точки зрения самой архитектуры. Взгляните под другим углом на решение своей задачи, возможно найдете более правильное решение построения архитектуры. Однако, в любом случае, если уж и передавать, то именно ссылку на объект, в котором содержатся все эти переменные, собственно, как и предложил Yahen.
|
|
|||||
[+1 25.03.12]
Регистрация: Jul 2009
Сообщений: 22
|
ок, спасибо )
|
|
|||||
[+4 07.04.12]
[+1 20.01.12] Регистрация: Nov 2009
Адрес: Украина, Славутич
Сообщений: 263
|
т.е. статика это плохо да? я не могу никак понять, одни пишут что это хорошо, другие наоборот... вот у меня например класс в котором хранятся переменные уровня в игре (ссылки на игрока, на контейнер для графики и т.д.) и менеджер событий клавиатуры все время через этот класс берет ссылку на игрока чтобы ему же изменить состояние, целесообразно ли переделывать (ну в смысле переменную в этом классе создать, чтобы он через чигири не лазил)?
П.С. просто не хочется чтобы мой код выглядел нубским =) |
Часовой пояс GMT +4, время: 07:48. |
|
« Предыдущая тема | Следующая тема » |
|
|