У меня есть эта проблема под рукой, и я хотел бы получить некоторые входные данные о наилучшем способе ее решения -
В моем приложении у меня есть различный набор объектов, и у каждого объекта есть некоторые свойства, связанные с ними.
Например, для таких объектов, как, например, фигуры, которые имеют некоторые общие свойства, такие как цвет и особые свойства (например, у круга есть радиус, а у центра есть определенное свойство)
Пользователь может изменитьсвойства объекта через инспектор свойств.В настоящее время PI хранит идентификатор объекта и использует его для связи с DOM для всего, что связано с объектом, на который он ссылается в данный момент.Например, если он хочет изменить свойство объекта, он вызовет DOM Api
ChangeObjectProperty(objectID , *);
(Надеюсь, использование идентификатора объекта для ссылки на объекты внутри DOM - правильный путь. (Есть ли лучший способ сделать это?))
Что я должен передать в качестве второго аргумента?Должен ли это быть один непрозрачный объект (скажем, IObjProps
), где каждый объект имеет свою собственную структуру?
Например, круг будет иметь свою собственную структуру -
class CircleProps extends CommonProps
{
public var radius:Number;
public var center:Point;
}
class CommonProps extends IObjProps
{
public function clone();
public var color:Number;
}
DOM передаст эту структуру объекту, и объект позаботится о применении изменения.
Таким образом, функция ChangeObjectProperty(objectID , *);
будет реализована как -
function ChangeObjectProperty(objectID , props:IObjProps)
{
var object:Object = GetObjectFromID(objectID);
object.SetProperty(iObjProps)
}
. Проблема с вышеприведенным подходом состоит в том, что - в некотором роде трудно понять, какое конкретное свойство изменилось, поскольку его единственная структура -
Альтернатива - иметь словарь свойств - клиент вставляет в словарь только те свойства, которые были изменены.
Я хотел бы знать, каков шаблон проектирования, используемый для таких случаев использования.
Добавлениебольше информации - это Actionscript -