Command Design Pattern
The Command pattern is a behavioural design pattern, in which an abstraction exists between an object that invokes a command, and the object that performs it.
E.g., a button will call the Invoker, that will call a pre-registered Command, that the Receiver will perform.
A Concrete Class will delegate a request to a command object, instead of implementing the request directly.
Using a command design pattern allows you to separate concerns and to solve problems of the concerns independently of each other.