Показать сообщение отдельно
Старый 16.03.2011, 15:34
maxkar вне форума Посмотреть профиль Отправить личное сообщение для maxkar Найти все сообщения от maxkar
  № 17  
Ответить с цитированием
maxkar

Регистрация: Nov 2010
Сообщений: 497
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
Тут есть 2 варианта
1) Предоставить геттер для того, вокруг чего мы делаем обертку. Это явно пахнет бессмысленностью
Правильно. Зачем получать из display object то, что именно он отображает? Мы же хотим "DisplayObject", а не что-то более сложное. Геттер там не нужен, подписку на события и все остальное будет делать тот, кто создал себе этот объект. Хочет - будет хранить ссылку на экземпляр. Не хочет - может выкинуть данные и использовать только UI.

Цитата:
2) Возвращать при каждом запросе новый экземпляр DO, сформированный исходя из данных в обертке. Но это нифига не экономно и идеологически криво.
Из метода? Да, новый экземпляр. Временем жизни управляет тот, кто вызвал метод "реднеринга" данных. Хочет - пусть кэширует UI и больше не вызвает метод createSomeUI(). Хочет - пусть вызывает и создает новый экземпляр. Экономия здесь ни при чем до тех пор, пока профайлер не покажет, что лишнее создание объектов таки является источником тормозов. Иначе кэширование - это как раз потенцильно лишние проблемы (со временем жизни и т.п.). В чем идеологическая кривость - не понятно. Более того, а если мы хотим отобразить в нескольких местах UI для одних и тех же данных, что делать?

На всякий случай поясню, что createSomeUI() - это не функция обертки. Это либо "свободная" функция (без привязки к классу), либо статическая функция в хелперах. Правильная сигнатура createUIFor(someData : DataForUI) : DisplayObject. Так что я не понимаю, о какой обертке идет речь. В моем примеер её нет. Есть данные, UI и функция из данных в их UI (новый экземпляр).