Flex中的值对象设计模式

时间:2011-06-20 04:51:43

标签: flex actionscript-3 design-patterns

我只是在寻找Flex中使用的设计模式。请告诉我关于价值对象设计模式以及如何在Flex中实现它。谢谢。

3 个答案:

答案 0 :(得分:4)

值对象实际上只不过是一个数据对象。在我看来,在Value Object上有一些方法是可以的......但它们是为了方便而存在,并没有真正添加任何行为。例如,这是一个VO的例子:

[Bindable]
public class PersonVO {
    public var firstName:String;
    public var lastName:String;

    public function PersonVO(firstName:String, lastName:String) {
        this.firstName = firstName;
        this.lastName = lastName;
    }

    public function clone():PersonVO {
        return new PersonVO(firstName, lastName);
    }
}

请注意,默认情况下此类是可变的,这就是我添加[Bindable]标记的原因。您可能希望对此类使用数据绑定,并且需要[Bindable](或某些等效的)才能实现此目的。

在很多情况下,我实际上更喜欢不可变值对象。以下是如何实现可变VO:

public class PersonVO {
    private var _firstName:String;
    private var _lastName:String;

    public function PersonVO(firstName:String, lastName:String) {
        _firstName = firstName;
        _lastName = lastName;
    }

    public function get firstName():String { return _firstName; }
    public function get lastName():String { return _lastName; }
}

答案 1 :(得分:2)

如果您来自Java背景,则VO类似于bean。我会将VO编码为

public class UserVO
{
     private var _name:String;

     public function set name(value:String):void
     {
          _name = value;
     }

     public function get name():String
     {
           return _name;
      }
}

这里我们声明私有变量并提供setter和getter方法来设置成员变量的值。虽然不建议这样做,但您可以在setter方法中指定值之前执行范围检查。您可以访问以下成员:

var userVo:UserVO = new UserVO();
userVo.name = "some name";

答案 2 :(得分:0)