Bridge (aka Driver)

You work with your team on a free photo editing sotfware.
Your are in charged of develop the part to print the photos.
In the office, you have a Canon PIXMA InkJet Printer.
So you contact the canon support team to get some documentations.
You need to have the API 's to use with their printers.
You develop the module to be able to print with this printer.
You test, it works, you're very happy !!!

BUT how do you do if you want to print on another printer ?
Your program and the printer are too much close.
You have to put a "bridge" between them.
This bridge will be a kind of contract between them.
This contract will contain all possible usages.
You understood, it defines how to "drive" the printer.

The program promise to use it to contact the printer.
The printer promise to response to each usage.

THIS IS THE BRIDGE DESIGN PATTERN !!!

When you will be in the same situation =
Your program has to work with a "part" that can changed.

Don't redevelop each time, just implement drivers !!!

You will define in an interface what your program needs.
You'll implement this interface for the "part" = his driver.
Your program will load and use only the interface.
If a new "part" appears, you'll just implement the driver for it.