Мне кажется здесь больше подойдет паттерн Command. Примерно с таким интерфейсом:

Код AS3:
public interface ICommand
{
function execute():void;
function redo():void;
function undo():void;
}
И соответственно:

Код AS3:
public interface ICommandHistory extends ICommand
{
function addChild(value: ICommand):void;
function removeChild(value: ICommand):void;
function get numChildren():int
}
Думаю с реализацией проблем не будет.