Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 29.04.2010, 18:52
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 1  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
По умолчанию Как и где хранить данные загруженные из вне.

Привет.
Часто бывает что нужно загрузить данные: из html, из php, целые xml-документы и т.п. Доступ к ним нужен из различных точек программы.
Я это делаю так: Создаю какой-нибудь Класс по типу DataHolder и в нем определяю нужные мне статические переменные и присваиваю им нужные значения. Когда нужна какая-нибудь переменная, массив или xml я просто беру его так: DataHoder.getData.
Скажите правильно ли это с точки зрения ООП?
Как и где Вы храните данные?

Старый 29.04.2010, 19:27
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 2  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Этот подход конечно лучше глобальных переменных, но по сути - то же самое.
С точки зрения ООП каждый объект должен иметь доступ только к тому минимуму информации, который необходим для его функционирования. И если объект не должен изменять данные, он не должен даже иметь такой возможности, т.е. например получать не сам узел xml, а его копию, или даже объект, созданный на его основе, хранящий данные в своем внутреннем формате и позволяющий производить с ними четко заданные манипуляции.
Общая практика такова: все, что не разрешено явно - запрещено. И тогда, если у вас вдруг непонятным образом изменится сохраненное значение, вам нужно будет перерывать весь код, а только те классы, объекты которых явно получают ссылки на проблемные данные.
__________________
тонкий тролль, осеянный благодатью

Старый 29.04.2010, 19:50
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 3  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Цитата:
Сообщение от GAIKER Посмотреть сообщение
Этот подход конечно лучше глобальных переменных, но по сути - то же самое.
С точки зрения ООП каждый объект должен иметь доступ только к тому минимуму информации, который необходим для его функционирования. И если объект не должен изменять данные, он не должен даже иметь такой возможности, т.е. например получать не сам узел xml, а его копию, или даже объект, созданный на его основе, хранящий данные в своем внутреннем формате и позволяющий производить с ними четко заданные манипуляции.
Общая практика такова: все, что не разрешено явно - запрещено. И тогда, если у вас вдруг непонятным образом изменится сохраненное значение, вам нужно будет перерывать весь код, а только те классы, объекты которых явно получают ссылки на проблемные данные.
Да, я так и делаю, даю нужный кусок xml-ля или нужный массив. Но где-то ведь он должен хранится, верно? К примеру у меня есть несколько Классов которые в разный промежуток времени используют разные данные из xml файла. Как здесь поступить? При создание Каждого экземпляра этих Классов грузить xml файл? Как-по мне лучше загрузить всё сразу "брать" тогда когда это нужно. Но хочется делать так как должно быть. Вот ситуация есть 2 Класса которым нужны внешние (разные переменные). Классы используются в разный промежуток времени. Когда грузить для них данные? Как помне лучше загрузить всё сразу вначале, а вы как считаете?

Старый 29.04.2010, 19:54
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 4  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Хранение данных - предназначение модели
http://ru.wikipedia.org/wiki/MVC
__________________
тонкий тролль, осеянный благодатью

Старый 29.04.2010, 19:59
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 5  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Эм, а в моём случае моделью нельзя назвать этот контейнер с данными откуда я всё беру?

Старый 29.04.2010, 20:06
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 6  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Можно будет, если доступ к нему будет не у всех подряд
http://www.flasher.ru/forum/showpost...54&postcount=2
__________________
тонкий тролль, осеянный благодатью

Старый 29.04.2010, 20:13
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 7  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Ага, понял спасибо. Но вот мне всё-таки не поянтно. Вот к примеру есть модуль, который должен работать при определённых условиях. Для его работы ему нужно загрузить большой xml файл. Как по мне загружать его перед началом работы модуля не логично т.к. будет "задержка", как быть в такой ситуации? Загрузить всё сразу по модулях и потом вызывать метода start() у каждого модуля когда это нужно?

Старый 29.04.2010, 23:43
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 8  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
в модуле сделать процедуру запроса данных , если их нет.

Например

Код AS3:
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
    }
 
}
_controller - это нечто что может получить данные, завернуть их в DataEvent и задиспатчить полученное событие.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

Создать новую тему Ответ Часовой пояс GMT +4, время: 03:15.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 03:15.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.