【问题标题】:What's the different between Value Object and a generic Class in AS3?值对象和 AS3 中的泛型类有什么不同?
【发布时间】:2010-01-09 04:35:02
【问题描述】:

我不明白 ActionScript3 中值对象和类在结构上有何不同。

如果您决定将任何课程称为 VO,是否可以将其称为 VO?

谢谢。

【问题讨论】:

    标签: actionscript-3 value-objects


    【解决方案1】:

    Value Object (VO) 是一种用于在软件应用子系统之间传输数据的设计模式。

    actionscript 类可以包括字段(vars)、属性(getter/setter)和方法。术语值对象是指框架(例如Cairngorm)用来在组件和模块之间存储和传递数据的类。这些类充当保存数据的模板,通常不包含 getter/setter 以外的函数。

    Cairngorm 框架有一个不包含任何方法的IValueObject 接口。

    它是一个标记接口,通过识别Cairngorm 应用程序中的类来提高代码的可读性,这些类将用作在应用程序层之间传递数据的值对象。

    值对象是 actionscript 中的一个松散术语。 AS3 language reference here 使用该术语表示传递给类的构造函数以初始化其属性的对象。

    class Circle extends Shape 
    {
        public var bgColor:Number = 0xFFFFFF;
        public var radius:Number = 0;
        public var xCenter:Number = 0;
        public var yCenter:Number = 0;
    
        public function Circle(initObj:Object) 
        {
            //initialize properties from the value object.
            for(var i:String in initObj) 
            {
                this[i] = initObj[i];
            }
            draw();
        }
    
        public function draw():void 
        {
            graphics.beginFill(bgColor);
            graphics.drawCircle(xCenter, yCenter, radius);
            graphics.endFill();
        }
    }
    
    var firstInitObj:Object = new Object();
    firstInitObj.bgColor = 0xFF0000;
    firstInitObj.radius = 25;
    firstInitObj.xCenter = 25;
    firstInitObj.yCenter = 25;
    //pass the value object to the constructor.                    
    var firstCircle:Circle = new Circle(firstInitObj);
    

    值对象的使用使类的用户能够只初始化他们希望的那些属性。这种方法的另一种方法(更健壮且更不容易出错的一个 imo)是将每个属性指定为构造函数的参数并为它们分配默认值。

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-30
      • 1970-01-01
      • 2017-08-04
      • 2012-12-06
      • 1970-01-01
      相关资源
      最近更新 更多