AS3のバリューオブジェクトと汎用クラスの違いは何ですか?
-
19-09-2019 - |
質問
ValueオブジェクトとActionScript3のクラスの間で構造的に異なることはわかりません。
あなたがそれを1つと呼ぶことに決めた場合、どのクラスもVOになることができますか?
ありがとう。
解決
値オブジェクト (VO)は、ソフトウェアアプリケーションサブシステム間でデータを転送するために使用される設計パターンです。
ActionScriptクラスには、フィールド(VARS)、プロパティ(ゲッター/セッター)、およびメソッドを含めることができます。用語値オブジェクトは、フレームワークによって使用されるクラスを指します( cairngorm)コンポーネントとモジュールにデータを保存および渡す。これらのクラスは、データを保持するためのテンプレートとして機能し、通常はゲッター/セッター以外の機能は含まれません。
cairngormフレームワークにはを持っています ivalueObject 方法は含まれていないインターフェイス。
これは、内部のクラスを識別することにより、コードの読みやすさを向上させるマーカーインターフェイスです
Cairngorm
アプリケーションのティア間でデータを渡すための値オブジェクトとして使用されるアプリケーション。
Valueオブジェクトは、ActionScriptのゆるい用語です。 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);
値オブジェクトを使用すると、クラスのユーザーが必要なプロパティのみを初期化できます。このメソッド(より堅牢でエラーが発生しやすいIMO)に代わるものは、各プロパティをコンストラクターへの引数として指定し、デフォルト値をそれらに割り当てることです。