Some applications can have multiple different implementations of a specific functionality. The implementations could be in the form of different algorithms or something to do with multiple platforms. The implementations tend to vary often and they could also have new implementations throughout the life cycle of a program. Moreover, the implementations could be used in different ways for different abstractions. In cases like these, it is good to decouple things in our code, or else we are in danger of a class explosion.
The bridge design pattern is quite useful in the cases where the ...