tl;dr Structural patterns ...
The Gang of Four wrote:
(Back to the main catalog
- Adapter: TODO
- Bridge: TODO
- Closure-Based State: Use the scoping mechanisms of closures to provide a means for storing state outside of, but still available to, an object.
- Composite: TODO
- Context Object: Use an object to provide some degree of inference or reference about the environment in which another object or group of objects is operating.
- Decorator: TODO
- Dynamic Object: An object whose structure and contents change over time without requiring any sort of change in code.
- Extension Interface: (TODO)
- Facade: TODO
- Flyweight: TODO
- Interceptor: Provide additional functionality to an existing component by "intercepting" a request to the component and either replacing or supplementing the component's behavior.
- Layers: TODO
- Message-Passing Interface: Define an interface for a component that takes a message (a name and a variable number of named values) and processes it, either synchronously or asynchronously.
- Microkernel: (TODO)
- Proxy: Provide a surrogate or placeholder for another object to control access to it.
- Value Object: Some objects represent values and have no intrinsic sense of identity or uniqueness. As such, these objects must present different semantics around their use.
- Whole-Part: Helps with the aggregation of components that together form a semantic unit.
- Wrapper Facade (aka Wrapper): Provide a "surface area" interface to an otherwise more complex underlying API so that callers can remain conveniently ignorant of the details.