шаблон проектирования, используемый для изменения свойств объекта из инспектора свойств - PullRequest
2 голосов
/ 21 ноября 2011

У меня есть эта проблема под рукой, и я хотел бы получить некоторые входные данные о наилучшем способе ее решения -

В моем приложении у меня есть различный набор объектов, и у каждого объекта есть некоторые свойства, связанные с ними.

Например, для таких объектов, как, например, фигуры, которые имеют некоторые общие свойства, такие как цвет и особые свойства (например, у круга есть радиус, а у центра есть определенное свойство)

Пользователь может изменитьсвойства объекта через инспектор свойств.В настоящее время 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 -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...