Structural Design Patterns
Bridge
Intent: Decouple an abstraction from its implementation so that the two can vary independently.
Also known as: Handle/Body
The Bridge design pattern connects an abstract class with an implementation class by containing a pointer (or reference) to an implementation class data member. Client code makes requests only to the abstract base class, without knowing details of the implementation. This stucture allows the following features:
1. Swith or select the implementation at run-time.
2. Exend the abstraction and the implementation independently by subclassing.
3. Hide the implementation from clients (black box reusability)
4. Prevent class proliferation.
5. Share implementation among multiple object. This allows efficient implementation of reference counting (smart pointers).
Note: The abstraction is often called the Handle, the implementation the Body The Handle contains a pointer to the Body and can call the functions of the Body through this pointer. Thsis also called delegation or black-box reusability, as opposed to inheritance, which is considered white-box reusability.
An example of independent abstract and implementation hierarchies connected by a bridge (from the Design Patterns book):

All operations on Window subclasses are implemented in terms of abstract operations from the WindowImp interface. This decouples the window abstractions from the various platform-specific implementations.