Since this is well explained in our study book (with good diagrams), I'll only be putting up an outline here.
Bridge Pattern - aka Handle/Body Decouple Abstraction from Implementation
Common tendency - handle special cases with inheritance.
Example problem space using inheritance - see UML diagrams pg 127, 128
What if we add another drawing program.
Solution: Take the variations and encapsulate them by putting into different classes.
There are two main OO concepts employed here:
Seen in Java's java.awt package: Component is the abstract class that represents the abstraction Inherited from Component are Button, TextField, List, etc. java.awt.peer contains interfaces for the platform specific implementations - ComponentPeer, ButtonPeer, ListPeer, etc. java.awt.Toolkit acts as the AbstractFactory (next meeting) that is used by the sublasses of Component to create their implementations. Thus, the platform supplies the concrete factory class.
Consequences(from GOF)
Implementation issues (from GOF)
Patterns often used with: Adapter AbstractFactory
If time permits: Another (interactive) example.