VO的两个使用技巧

在AS3中会经常使用VO(值对象),尤其是在Cairngorm之类的框架中。下面是我在工作中使用VO而总结出的两个使用技巧,与大家分享。

一、可用遍历方式赋值。如下面代码:

package vo
{
  public class Media
  {
    public var name:String;
    public var singer:String;
    public var format:String;
  
    public function Media()
    {
    }
  
  }
}

如果VO的属性与其它对象的属性一一对应。在转换时就可以用遍历赋值。如下面代码我们将XML属性解析成VO属性。

var ac:ArrayCollection = new ArrayCollection();
for each(var xml:XML in list)
{
  var media:Media = new Media();
  for each (var node:XML in xml.attributes())
  {
    var obj:Object = node.localName();
    media[obj] = xml.@[obj];
  }
  ac.addItem(media);
}

二、动态VO类。如下面代码:

package vo
{
  public dynamic class Media
  {
    public function Media()
    {
    }

  }
}

这种方法是我同事首先提出来的。其实用使用了动态类可动态添加属性这一特性。不过这样的VO在Flex Builder中是没有代码提示的,慎用。

发表评论