2010-01-09 51 views

回答

6

Value Object(VO)是用於在軟件應用子系統之間傳輸數據的設計模式。

一個actionscript類可以包含字段(變量),屬性(getters/setters)和方法。術語值對象是指框架(如Cairngorm)用於在組件和模塊之間存儲和傳遞數據的類。這些類用作保存數據的模板,通常不包含getter/setter之外的函數。

Cairngorm框架有一個IValueObject接口,它不包含任何方法。

這是一個標記接口,它通過標識Cairngorm應用程序中用於在應用程序層之間傳遞數據的值對象的類來提高代碼的可讀性。

值對象是動作中的一個鬆散術語。 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); 

value對象的使用使得類的用戶只能初始化他們希望的那些屬性。此方法的替代方法(更強健,更容易出錯的一個imo)是將每個屬性指定爲構造函數的參數併爲其分配默認值。

相關問題