What is the difference between Bridge and Adapter?

Answer

Both Bridge and Adapter involve wrapping one interface with another, but their intent and timing differ fundamentally. Adapter is applied after the fact to make two incompatible existing interfaces work together — it is a patch. Bridge is designed upfront to prevent a class hierarchy from growing exponentially when two independent dimensions of variation exist. Adapter changes the interface of an existing class without changing its behavior. Bridge defines both the abstraction and implementation interfaces from the start and keeps them separate so they can vary independently. If you're integrating a legacy class with a new interface, use Adapter. If you're designing a new class hierarchy with multiple varying dimensions, use Bridge.