Design patterns are reusable solutions to common programming problems. The Gang of Four (GoF) authored the seminal book on design patterns, identifying 23 patterns divided into creational, structural and behavioral categories. Creational patterns provide object creation mechanisms, structural patterns manage object relationships, and behavioral patterns define communication between objects. Design patterns can be further divided into class and object patterns based on whether relationships are defined at compile-time or run-time.