Чем отличается Value Object от универсального класса в AS3? - PullRequest
4 голосов
/ 09 января 2010

Я не понимаю, что структурно отличается между Объектом Значения и Классом в ActionScript3.

Может ли какой-либо класс быть VO, если вы решите назвать его одним из них?

Спасибо.

1 Ответ

6 голосов
/ 09 января 2010

Объект значения (VO) - это шаблон проектирования, используемый для передачи данных между подсистемами программных приложений.

Класс actionscript может включать в себя поля (vars), свойства (getters / setters) и методы. Термин «объект значения» относится к классам, используемым средами (такими как Cairngorm ) для хранения и передачи данных между компонентами и модулями. Эти классы действуют как шаблоны для хранения данных и, как правило, не содержат функций, кроме методов получения / установки.

Платформа Cairngorm имеет интерфейс 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) - указывать каждое свойство как аргументы конструктора и присваивать им значения по умолчанию.

...