Bridge
Intent
Decouple an abstraction from its implementation so that the two can vary independently
Applicability
- decouple implementation from interface
- implementation needs to change dynamically
- nested generalizations, support for extensibility in multiple dimensions