4

ActionScript3 の Value Object と Class の構造上の違いがわかりません。

VO と呼ぶことにした場合、任意のクラスを VO にすることができますか?

ありがとう。

4

1 に答える 1

6

バリュー オブジェクト(VO) は、ソフトウェア アプリケーション サブシステム間でデータを転送するために使用される設計パターンです。

actionscript クラスには、フィールド (vars)、プロパティ (getter/setter)、およびメソッドを含めることができます。値オブジェクトという用語は、フレームワーク ( Cairngormなど) で使用されるクラスを指し、コンポーネントやモジュール間でデータを格納および受け渡します。これらのクラスは、データを保持するためのテンプレートとして機能し、通常、ゲッター/セッター以外の関数は含まれません。

Cairngorm フレームワークには、メソッドを含まないIValueObjectインターフェイスがあります。

Cairngormこれは、アプリケーションの層間でデータを渡すための値オブジェクトとして使用されるアプリケーション内のクラスを識別することにより、コードの可読性を向上させるマーカー インターフェイスです。

値オブジェクトは、アクション スクリプトではあいまいな用語です。このAS3 言語リファレンスでは、クラスのコンストラクターに渡されてそのプロパティを初期化するオブジェクトに対して、この用語を使用しています。

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);

値オブジェクトを使用すると、クラスのユーザーは必要なプロパティのみを初期化できます。この方法の代替 (より堅牢でエラーが発生しにくいもの) は、各プロパティをコンストラクターへの引数として指定し、それらにデフォルト値を割り当てることです。

于 2010-01-09T06:50:30.040 に答える