[ComponentDesignPatterns | CategoryPattern]
Context
You're developing in an environment where location of associated components can change in the course of a project.
Perhaps the location of a component can change at runtime. It might be required to exist a on different platform if distributed, or a different protocol might be required to communicate with it.
Security and reliability issues differ depending on the location of your component.
You're not in an environment where your program works the same regardless of the distribution of the components and frameworks it is composed of.
Problem
How do you guard against the physical location of components affecting your system in unfavorable or unforseen ways?
Forces
Explicitly recognize and decide upon the allowed location of components that depend on one another. Classify components into ones that either can be distributed (domestic or foreign) or cannot be distributed (domestic only).
Resulting Context
Relative to a component, you might use AbstractInteractions with domestic components, and GoingThroughCustoms and developing InterfacesLast with foreign components.
FacadesAsDistributedComponents can be used to create a portal for an application to get authorization and authenticated to use server components.
Known Uses
Example
Related Patterns