What is the Bridge design pattern?

Answer

The Bridge pattern decouples an abstraction from its implementation so that the two can vary independently. Without Bridge, combining two dimensions of variation (e.g., shape types and rendering APIs) leads to an exponential explosion of subclasses. Bridge solves this by making the abstraction hold a reference (bridge) to an implementation object. For example, a Shape abstraction can hold a Renderer implementation, so you can have Circle and Square work with either SVGRenderer or CanvasRenderer without four separate classes. The key intent is to split one large class into two independent hierarchies.