И название придумать сложно и объяснить, хотя со вторым проще, так-как хочется не придумать новое, а повторить имеющееся. Как пример класс Matrix. Одноимённое свойство есть у всех ДО и при помощи этого класса, можно изменить несколько свойств сразу. Как такое реализовать я даже представить не могу, некогда такого не встречал. Единственное что приходит на скудный ум - ... Но я знаю, что это совсем не то, скорее всего для такой реализации есть правильное название. Поделитесь, как такое сделать?

Код AS3:
package
{
import flash.display.Sprite;
public class Main extends Sprite
{
public function Main()
{
var customClass:CustomClass = new CustomClass();
var properties:Properties = customClass.properties;
properties.propertyOne = 10;
properties.propertyTwo = 20;
properties.propertyThree = 30;
customClass.properties = properties;
trace(customClass.propertyOne, customClass.propertyTwo, customClass.propertyThree);
}
}
}

Код AS3:
package
{
public class CustomClass
{
private var _propertyOne:Number;
private var _propertyTwo:Number;
private var _propertyThree:Number;
private var _properties:Properties;
public function CustomClass()
{
}
public function get properties():Properties
{
if (_properties == null)
_properties = new Properties();
return _properties;
}
public function set properties(value:Properties):void
{
_properties = value;
_properties.mutableClass = this;
}
public function set propertyOne(value:Number):void
{
if (value == _propertyOne)
{
return;
}
_propertyOne = value;
}
public function set propertyTwo(value:Number):void
{
if (value == _propertyTwo)
{
return;
}
_propertyTwo = value;
}
public function set propertyThree(value:Number):void
{
if (value == _propertyThree)
{
return;
}
_propertyThree = value;
}
public function get propertyOne():Number
{
return _propertyOne;
}
public function get propertyTwo():Number
{
return _propertyTwo;
}
public function get propertyThree():Number
{
return _propertyThree;
}
}
}

Код AS3:
package
{
public class Properties
{
private var _propertyOne:Number;
private var _propertyTwo:Number;
private var _propertyThree:Number;
private var _propertis:Vector.<String>;
private var _mutableClass:CustomClass;
public function Properties()
{
_propertis = new < String > ['propertyOne', 'propertyTwo', 'propertyThree'];
}
private function changeProperties():void
{
var length:int = _propertis.length;
var property:String;
for (var i:int = 0; i < length; i++)
{
property = _propertis[i];
_mutableClass[property] = this[property];
}
}
public function set mutableClass(value:CustomClass):void
{
if (value == _mutableClass)
{
return;
}
_mutableClass = value;
this.changeProperties();
}
public function get propertyOne():Number
{
return _propertyOne;
}
public function set propertyOne(value:Number):void
{
if (value == _propertyOne)
{
return;
}
_propertyOne = value;
}
public function get propertyTwo():Number
{
return _propertyTwo;
}
public function set propertyTwo(value:Number):void
{
if (value == _propertyTwo)
{
return;
}
_propertyTwo = value;
}
public function get propertyThree():Number
{
return _propertyThree;
}
public function set propertyThree(value:Number):void
{
if (value == _propertyThree)
{
return;
}
_propertyThree = value;
}
}
}