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 purpose of the bridge design pattern is to decouple an abstraction from its implementation so that the two can vary independently.
The bridge design pattern is quite useful in the cases where the abstractions or the implementations could vary often and independently. If we directly implement an abstraction, variations to the abstraction...