You’d naturally think about using the pattern when
There is more than one object that may handle a request and the handler is known only at runtime.
You want to issue a request to a group of objects without specifying
a particular receiver that will handle the request explicitly.