A bridge is a “facet class” which provides access to other functionality. We may need to use a bridge where the behaviour of and object needs to change, possibly dynamically, but there are multiple orthogonal dimensions of variability.

Benefits:
- Easily separate core logic and variation points
- Easily provide many different implementations of the details and use the one you need
- Support orthogonality varying different aspects of the behaviour – facets
- Functionality can be varied at system runtime
Disadvantages:
- Object Schizophrenia
- Fairly complex set up with logic distributed over several classes.
- Requires selecting correct classes to init and wire up.