Origin: |
GoF 95 |
Reason: |
Allow (a hierarchy of) abstractions to vary independently
of (a hierarchy of) their implementations. E.g., select or
switch an abstraction's implementation at run-time
(a.k.a Handle/Body).
|
Synopsis: |
Decouple an abstraction from its implementation so that the
two can vary independently [GoF].
|
Example: |
A windowing system defines a Window and some specializations,
e.g., IconWindow. These abstractions are implemented for
various platforms, e.g., Unix, Apple, Microsoft.
|
Solution: |
Abstraction |
Defines the abstraction.
Keeps a reference to an object of type Implementor. |
RefinedAbstraction |
Extends the interface defined by Abstraction. |
Implementor |
Defines the interface for implementation classes. |
ConcreteImplementor |
Implements the Implementor. |
|
See also: |
Adapter
(applied after coding, whereas Bridge is applied in design)
Delegation
|