![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Привет.
Часто бывает что нужно загрузить данные: из html, из php, целые xml-документы и т.п. Доступ к ним нужен из различных точек программы. Я это делаю так: Создаю какой-нибудь Класс по типу DataHolder и в нем определяю нужные мне статические переменные и присваиваю им нужные значения. Когда нужна какая-нибудь переменная, массив или xml я просто беру его так: DataHoder.getData. Скажите правильно ли это с точки зрения ООП? Как и где Вы храните данные? |
|
|||||
|
strange mood
|
Этот подход конечно лучше глобальных переменных, но по сути - то же самое.
С точки зрения ООП каждый объект должен иметь доступ только к тому минимуму информации, который необходим для его функционирования. И если объект не должен изменять данные, он не должен даже иметь такой возможности, т.е. например получать не сам узел xml, а его копию, или даже объект, созданный на его основе, хранящий данные в своем внутреннем формате и позволяющий производить с ними четко заданные манипуляции. Общая практика такова: все, что не разрешено явно - запрещено. И тогда, если у вас вдруг непонятным образом изменится сохраненное значение, вам нужно будет перерывать весь код, а только те классы, объекты которых явно получают ссылки на проблемные данные.
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Цитата:
|
|
|||||
|
strange mood
|
Хранение данных - предназначение модели
http://ru.wikipedia.org/wiki/MVC
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
strange mood
|
Можно будет, если доступ к нему будет не у всех подряд
http://www.flasher.ru/forum/showpost...54&postcount=2
__________________
тонкий тролль, осеянный благодатью |
|
|||||
|
Ага, понял спасибо. Но вот мне всё-таки не поянтно. Вот к примеру есть модуль, который должен работать при определённых условиях. Для его работы ему нужно загрузить большой xml файл. Как по мне загружать его перед началом работы модуля не логично т.к. будет "задержка", как быть в такой ситуации? Загрузить всё сразу по модулях и потом вызывать метода start() у каждого модуля когда это нужно?
|
|
|||||
|
.
|
в модуле сделать процедуру запроса данных , если их нет.
Например class Module extends EventDispatcher { public function Module() { super(); this.processData(); } private function processData(event:DataEvent = null):void { if (event && event.data) this._data = event.data; if ( !this._data || this._data.expired ) { this._controller.addEventListener("dataComplete", this.processData); super.dispatchEvent ( new NoDataEvent() ); return; } // do data process } } |
![]() |
![]() |
Часовой пояс GMT +4, время: 03:15. |
|
|
« Предыдущая тема | Следующая тема » |
|
|