Я думаю что функция execute должна принимать параметр с командой, а не конструктор, и наверно не плохо что бы она возвращала результат обработано или нет. Не плохо наверно организовать массив куда свалить все экземпляры команд и потом в цикле их вызывать. Это так же решает проблему создания описанную в предыдущем комментарии.