Bridge pattern intent is to decouple the abstraction from its implementation, so abstraction and implementation are independent (not bound at compile time, so no impact to the client):
The benefits are as mentioned:
- Decoupling interfaces from the implementation
- Configuring the implementation of an abstraction at runtime
- Elimination of compile-time dependency
- Improved extensibility
- Hiding implementation details from the client
The impact is, introducing some level of complexity.