Nice thing about design patterns is that their names describe problems they solve. So, you should check Command pattern.
Command pattern is a behavioral design pattern in which an object is used to represent and encapsulate all the information needed to call a method at a later time. This information includes the method name, the object that owns the method and values for the method parameters.
Command pattern consists command, receiver, invoker and client.
Modes object will be particularly interesting for you, since you want to add modes of execution.
Invoker object keeps information about command executions, and has a responsibility for executing different modes for commands.