OOAD is all about separating the abstraction from implementation. The Bridge Pattern takes this a step forward.
It encapsulates an implementation class inside of an interface class. The bridge pattern allows the Abstraction and the Implementation to be developed independently. The client code needs to access only the Abstraction - without being concerned about the Implementation. The abstraction is an interface or abstract class and the implementor is also an interface or abstract class.
The abstraction contains a reference to the implementor. Children of the abstraction are referred to as refined abstractions, and children of the implementor are concrete implementors. Since we can change the reference to the implementor in the abstraction, we are able to change the abstraction's implementor at run-time. Changes to the implementor do not affect client code.
The Bridge Pattern has four participants: