Apache flex 在构造和初始化中使用值对象的缺点
我想知道在初始化对象时使用值对象是否有任何缺点/缺点,例如:Apache flex 在构造和初始化中使用值对象的缺点,apache-flex,actionscript-3,actionscript,Apache Flex,Actionscript 3,Actionscript,我想知道在初始化对象时使用值对象是否有任何缺点/缺点,例如: public class MonsterVO { public var tenticles : Boolean; public var growl : GrowlType; public var damage : int; public var health : int; } public class Monster { private var tenticles : Boolean;
public class MonsterVO
{
public var tenticles : Boolean;
public var growl : GrowlType;
public var damage : int;
public var health : int;
}
public class Monster
{
private var tenticles : Boolean;
private var growl : GrowlType;
private var damage : int;
private var health : int;
public function Monster(monsterData : MonsterVO)
{
tenticles = monsterData.tenticles;
growl = monsterData.growl.clone();
damage = monsterData.damage;
health = monsterData.health;
}
}
如果您计划使用并初始化
Monster
域对象的唯一方法(从DTOMonsterVO
),则没有问题。但是你怎么能确定将来不会有其他用途呢?您不能在ActionScript(如Java)中重载构造函数。如果需要创建克隆,该怎么办?您必须为此创建一些假的MonsterVO
:
我认为最好创建一些工厂方法来解决您的问题。如果您想使用fa工厂,我认为这是一个很好的观点,您仍然可以使用使用配置对象的初始化机制 我会把它从构造器中移除,你 如果实现如下方法,可以通过更改VO来更改配置。这将是最简单的解决方案(不使用工厂或类似DI的方法)
请注意,您需要将您的可配置选项作为属性提供。这实际上取决于您要完成的任务。您将使用monster的上下文是什么。这是您的用例还是只是一个示例?为什么您的monster不知道它已经有多少触手?
public function configure(config:MonsterVO):void {
for (var prop :String in config) {
if ( config[prop] != null && this.hasOwnProperty(prop) ) this[prop] = config[prop];
}
}