Encapsulate a request as an object. Enables polymorphic processing of different client requests. Fits naturally into [priority] queue processing, typical of transaction servers (e.g., file servers, web servers). Results in a simple, general interface that is unaffected by new commands/transactions.
Enables designer to factor out code that is common to different "methods" aka operations or commands.