1. Design patterns are general reusable solutions to common problems in software design. There are creational, structural, and behavioral patterns. 2. Creational patterns deal with object creation mechanisms and include abstract factory, builder, factory method, prototype, and singleton patterns. 3. Structural patterns concern class and object composition, using inheritance to compose interfaces and objects. Examples include adapter, bridge, composite, decorator, facade, flyweight, and proxy patterns.