문제

ActionScript3의 값 객체와 클래스간에 구조적으로 다른 점을 이해하지 못합니다.

당신이 그것을 호출하기로 결정했다면 어떤 클래스라도 VO가 될 수 있습니까?

감사.

도움이 되었습니까?

해결책

가치 객체 (VO)는 소프트웨어 애플리케이션 서브 시스템간에 데이터를 전송하는 데 사용되는 설계 패턴입니다.

ActionScript 클래스에는 필드 (VAR), 속성 (Getters/Setters) 및 메소드가 포함될 수 있습니다. 값 객체라는 용어는 프레임 워크에서 사용하는 클래스 (예 : 연수정) 구성 요소와 모듈간에 데이터를 저장하고 전달합니다. 이 클래스는 데이터를 보유하기위한 템플릿 역할을하며 일반적으로 getters/setters 이외의 기능을 포함하지 않습니다.

Cairngorm 프레임 워크에는 a ivalueobject 메소드가 포함되지 않은 인터페이스.

이 클래스를 식별하여 코드의 가독성을 향상시키는 마커 인터페이스입니다. Cairngorm 응용 프로그램의 계층간에 데이터를 전달하기위한 값 객체로 사용되는 응용 프로그램.

값 객체는 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)은 각 속성을 생성자에 대한 인수로 지정하고 기본값을 할당하는 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top