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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.12.2010, 23:49
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 11  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
gloomyBrain, чтобы не городить switch для создания нужного экземпляра, ибо switch будет состоять практически из копипаста, где меняется только имя класса. А если понадобится например добавить/удалить/изменить параметр, который передаётся в конструктор, то его опять же понадобится менять в каждой ветке, что не есть гуд.
__________________
тонкий тролль, осеянный благодатью

Старый 22.12.2010, 23:57
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 12  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
А если понадобится например добавить/удалить/изменить параметр, который передаётся в конструктор
А если нужно передавать разное количество параметров при разных классНэймах?
__________________
...вселенская грусть

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

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

Старый 23.12.2010, 00:24
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 14  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Разное число параметров в конструкторе модуля - это далеко не ошибка в архитектуре, имо

А если выбирать между написанием одного switch или кучи фабрик (каждая из которых просто будет генерить экземпляр класса с нужными параметрами) я все же выберу switch =)

Говоря о данной задаче - проще сделать какой-то интерфейс ISerializable и от него имплементить все модули с соответствующим методом serialize. Метод должен записывать в удобный формат имя класса, параметры для конструктора и параметры, задаваемые после конструктора. Соответственно, фабрика просто должна все это воссоздавать в нужном виде.
__________________
...вселенская грусть

Старый 23.12.2010, 09:27
zuxul вне форума Посмотреть профиль Отправить личное сообщение для zuxul Найти все сообщения от zuxul
  № 15  
Ответить с цитированием
zuxul

Регистрация: Dec 2009
Адрес: 59°13′N, 39°54′E
Сообщений: 445
Записей в блоге: 1
Цитата:
Сообщение от gloomyBrain Посмотреть сообщение
А если выбирать между написанием одного switch или кучи фабрик (каждая из которых просто будет генерить экземпляр класса с нужными параметрами) я все же выберу switch =)
Всегда думал, что когда я пишу такой switch, я пишу мини-фабрику, которая не выделена в отдельный класс.
Насчет фабрик и параметров - всегда можно передавать фабрике, допустим, массив с параметрами и никаких проблем не будет.

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

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

Старый 13.02.2011, 18:21
FlashWizard вне форума Посмотреть профиль Отправить личное сообщение для FlashWizard Найти все сообщения от FlashWizard
  № 17  
Ответить с цитированием
FlashWizard
[+1 22.06.11]
 
Аватар для FlashWizard

Регистрация: Jun 2010
Адрес: г. Ташкент
Сообщений: 364
И всё же. Нельзя чтоль String в Class? И на оборот. Без фабрик всяких.

Старый 13.02.2011, 18:53
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 18  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Цитата:
Сообщение от FlashWizard Посмотреть сообщение
И всё же. Нельзя чтоль String в Class? И на оборот. Без фабрик всяких.
Если вы потратили ну очень много времени на решение проблемы, и все еще не работает - загляните в документацию.
(Не я).
То, что вы хотите называется reflection - получениe ссылки на определение по описанию. В AS3 есть такие инструменты (за исключением очевидных: object["property"]): http://help.adobe.com/en_US/FlashPla...ge-detail.html
а именно:
  • describeType
  • getDefinitionByName
  • getQualifiedClassName
  • getQualifiedSuperclassName
Кроме них есть еще уже упоминавшийся тут класс ApplicationDomain.
__________________
Hell is the possibility of sanity

Старый 13.02.2011, 18:58
orcpochta вне форума Посмотреть профиль Отправить личное сообщение для orcpochta Найти все сообщения от orcpochta
  № 19  
Ответить с цитированием
orcpochta

Регистрация: Feb 2008
Сообщений: 890
Цитата:
Сообщение от FlashWizard Посмотреть сообщение
И всё же. Нельзя чтоль String в Class? И на оборот. Без фабрик всяких.
Код AS3:
import flash.utils.getDefinitionByName;
import flash.utils.getQualifiedClassName;
 
var myClassName:String = getQualifiedClassName(Sprite);
trace(myClassName);
 
var myClass:Class = getDefinitionByName(myClassName) as Class;
 
var myObj:Object = new myClass();
trace(myObj);
__________________
скриптограф

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

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

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


 


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


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