- Abstraction
- AbstractionImplementation
- Implementor
- ConcreteImplementor
This design pattern is used to "decouple an abstraction from its implementation so that the two can vary independently". The bridge uses encapsulation, aggregation, and can use inheritance to separate responsibilities into different classes.