Показать сообщение отдельно
Старый 22.02.2011, 19:52
Doctor76 вне форума Посмотреть профиль Отправить личное сообщение для Doctor76 Найти все сообщения от Doctor76
  № 1  
Ответить с цитированием
Doctor76
 
Аватар для Doctor76

Регистрация: Nov 2007
Сообщений: 183
По умолчанию Создание объект в зависимости от объекта данных

Всем здравствуйте! Мне на ум ничего толкового не приходит. может кто подскажет как грамотно сделать.
Попробую объяснить. Есть некий массив данных
Допустим такой:

Код AS3:
var dataList:Array = [ShapeData1,ShapeData2,ShapeData3,...,ShapeData2]
Все они наследуются от ShapeData

Нужна функция, которая возвращает определенный объект Shape в зависимости от типа DataShape

я написал вот такую:
Код AS3:
public static function getShapeByData(_data : ShapeData) : Shape {					
 
 
		if(_data as ShapeData1) return new Shape1(_data);
 
		if(_data as ShapeData2) return new Shape2(_data);
 
                 if(_data as ShapeData3) return new Shape3(_data);
 
		.......................................		
 
 
		return new Shape(_data);
	}
Но честно говоря не очень как то. Проблема в том, что если допустим Shape3 наследуется от Shape2 - который в свою очередь наследуется от Shape, то в данной функции Shape3 мне не видать как своих ушей, до тех пор пока к примеру я не помещу условие проверки Shape3 выше


Как бы четко определить, что некая ShapeData именно ShapeData1 или ShapeData3, независимо от их порядка проверки в функции (не зависимо от их наследования).

Или еще может какой выход есть. Я перелопатил весь форум, нашел только

getQualifiedSuperclassName(value:*):String

но он название класса с пекеджем выдает. Это нужно получается еще эту строку обрезать от него, что бы к примеру создать в зависимости от названии ShapeData
Если конечно нет другого выхода, наверно так сделаю.