Apache flex Flex中的值对象设计模式

Apache flex Flex中的值对象设计模式,apache-flex,actionscript-3,design-patterns,Apache Flex,Actionscript 3,Design Patterns,我只是看看Flex中使用的设计模式。请告诉我关于价值对象设计模式以及它是如何在Flex中实现的。谢谢。如果您有Java背景,则A类似于bean。我会将VO编码为 public class UserVO { private var _name:String; public function set name(value:String):void { _name = value; } public function get n

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

如果您有Java背景,则A类似于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";

值对象实际上只是一个数据对象。在我看来,在一个值对象上有一些方法是可以的。。。但它们的存在只是为了方便,并不真正增加任何行为。例如,以下是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; }
}

下面的网站值得一看:

查看这个维基百科链接:非常感谢@silverback提供了如此清晰的解释,但在Flex中,VO没有方法,但我开始了解Java中的概念。再次感谢:)这些不是你的常规方法,它们被称为变异子。嘿@silverback,再次感谢你。我对这些变异方法知之甚少。现在我知道:)@Kishor Kumar:Value对象可以有方法。只是不要给他们增加行为。让他们成为方便的方法。。。像
clone()
非常感谢@Brian Genisio。现在,我已经清楚地了解了VO:)