Что-то мне кажется что вариант с декоратором - не вариант. Я бы сделал что-то на подобие фильтров. Принципиальная разница в том, что не вот так:

Код AS3:
var hero:IHero = new Hero();
hero = new Hat(hero);
hero = new Sword(hero);
а вот так:

Код AS3:
var hero:Hero = new Hero();
hero.addBonus("hat boost", new Hat(10));
hero.addBonus("sword boost", new Sword(-3));
...
hero.removeBonus("sword boost")
Во втором варианте не нужен поиск при удалении.
Хотя, сделать ссылки у самих фильтров типа next-prev тоже можно, если результат применения фильтров зависит от порядка.
Короче да, кроме оптимизации поиска нужного декоратора я к предложению alatar'а ничего не могу добавить =)