Кажется, я все таки нашел способ снизить потребляемую предметами память! В базовом классе
Item прописываем геттеры на все возможные характеристики, а через декоратор добавляем нужные бонусы и храним их значения в свойствах. Таким образом предмет хранит в себе только те свойства характеристик к которым есть бонус, а на все остальное возвращает ноль. К сожалению, не знаю как измерить занимаемую всей этой конструкцией память, но наверняка это лучше чем 25 элементный массив.

Код AS3:
public class Main extends Sprite {
public function Main():void {
var person:Person= new Person(0,10,5)
var hat:IItem = new Item("Magic hat");
hat = new StrenghtUpgrade(hat, 58);
hat = new DexterityUpgrade(hat, 15);
person.wearItem(hat);
}
}

Код AS3:
public class Person extends Sprite{
public var strength:int;
public var dexterity:int;
public var stamina:int;
public function Person(strength:int,dexterity:int,stamina:int) {
this.strength = strength;
this.dexterity = dexterity;
this.stamina = stamina;
}
public function wearItem(item:IItem):void {
this.strength+=item.strength;
this.dexterity+=item.dexterity;
this.stamina+=item.stamina;
}
}

Код AS3:
public interface ISkills {
function get strength():int;
function get dexterity():int;
function get stamina():int;
}

Код AS3:
public interface IItem extends ISkills{
function get name():String;
}

Код AS3:
public class Item implements IItem{
protected var _name:String;
public function Item(name:String){
this._name = name;
}
public function get strength():int {
return 0;
}
public function get dexterity():int {
return 0;
}
public function get stamina():int {
return 0;
}
public function get name():String {
return _name;
}
}

Код AS3:
public class ItemDecorator implements IItem{
protected var _item:IItem;
public function ItemDecorator(item:IItem){
this._item = item;
}
public function get strength():int {
return _item.strength;
}
public function get dexterity():int {
return _item.dexterity;
}
public function get stamina():int {
return _item.stamina;
}
public function get name():String {
return _item.name;
}
}

Код AS3:
public class StrenghtUpgrade extends ItemDecorator{
protected var _strength:int;
public function StrenghtUpgrade(item:IItem,value:int) {
super(item);
this._strength = value;
}
override public function get strength():int {
return super.strength + this._strength;
}
}
Правда если захотеть 2 раза проапгрейдить вещь на один и тот же бонус, то в результате будут храниться два свойства на каждый апгрейд, но думаю это можно как нибудь решить.