The Bridge design pattern solves problems like:
How can an abstraction and its implementation vary independently?
How can an implementation be selected and exchanged at run-time?
See Applicability section for all problems Bridge can solve. See Solution section for how Bridge solves the problems.