This document discusses three design patterns: Adapter, Bridge, and Composite.
The Adapter pattern allows classes with incompatible interfaces to work together by wrapping its interface into a compatible one. The Bridge pattern decouples an abstraction from its implementation, allowing them to vary independently. The Composite pattern allows treating individual objects and compositions of objects uniformly.