Problem

How can I let parts of an application cooperate, even when they exist/run in different runtime environments?

These environments might change over timeā€¦

Solution

The Broker pattern can be used to structure distributed software systems with decoupled elements that interact by remote service invocations. The broker is responsible for coordinating communication, such as forwarding requests, as well as for transmitting results and exceptions/errors.

Components interact with the broker via stubs and skeletons, that can be automatically generated.

References

CORBA (common object request broker architecture) is a well-known application of this pattern.

See for example the CORBA website.