This document provides an introduction to design patterns. It begins with an overview of what patterns are, discussing Christopher Alexander's definition that a pattern is a proven solution to a recurring problem in a specific context. It then outlines the common elements of patterns. The rest of the document discusses why design patterns are useful, references the Gang of Four book, and categorizes patterns into creational, structural and behavioral groups. It also touches briefly on some specific patterns and principles like program to an interface, favor composition over inheritance, and the difference between frameworks and toolkits.
Related topics: