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.