Encapsulate request as object thereby letting you parameterize clients with different requests, queue or log requests and support undoable operations
Command
Context
Flyweight
Builder