我只是在寻找Flex中使用的设计模式。请告诉我关于价值对象设计模式以及如何在Flex中实现它。谢谢。
答案 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)