ActionScript3 の Value Object と Class の構造上の違いがわかりません。
VO と呼ぶことにした場合、任意のクラスを VO にすることができますか?
ありがとう。
ActionScript3 の Value Object と Class の構造上の違いがわかりません。
VO と呼ぶことにした場合、任意のクラスを VO にすることができますか?
ありがとう。
バリュー オブジェクト(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);
値オブジェクトを使用すると、クラスのユーザーは必要なプロパティのみを初期化できます。この方法の代替 (より堅牢でエラーが発生しにくいもの) は、各プロパティをコンストラクターへの引数として指定し、それらにデフォルト値を割り当てることです。