在构造和初始化中使用值对象的缺点

| 我想知道在初始化对象时使用值对象是否有任何缺点/缺点,例如:
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;
    }
}
    
已邀请:
        如果您打算使用和初始化(1ѭ域对象的唯一方法(来自DTO
MonsterVO
)—没问题。但是,如何确定将来是否没有其他用途呢?您不能在ActionScript中重载构造函数(例如Java)。如果需要创建克隆怎么办?为此,您必须创建一些假的
MonsterVO
:( 我认为最好创建一些工厂方法来解决您的问题。     
        如果要使用fa Factory(我认为这是个不错的主意),则仍可以使用带有配置对象的初始化机制。 我会从构造函数中删除它。 如果实现以下方法,则可以通过更改VO来更改配置。这将是最简单的解决方案(不使用Factory或类似DI的方法)
public function configure(config:MonsterVO):void {
   for (var prop :String in config) {
        if ( config[prop] != null && this.hasOwnProperty(prop) ) this[prop] = config[prop];             
    }
}
注意,您需要将可配置选项用作属性。     

要回复问题请先登录注册