Q: What is a Design Pattern? A: Design Patterns represent solutions to problems what arise when developing software within a particular context. Quote: Each pattern describes a problem which occurs over and over again in our environment, and then describes the core of the solution to that problem, in such a way that you can use this solution a million times over, without ever doing it the same way twice. Quote: Patterns help you learn from other's successes, instead of your own failures. Q: How many types of design patterns exist? A: Basically, there are three categories: Creational Patterns: deal with initializing and configuring classes and objectsStructural Patterns: deal with decoupling the interface and implementation of classes and objectsBehavioral Patterns: deal with dynamic interactions among societies of classes and objects Q: What are good books about design patterns. A: Here are some must-have books: Design Patterns by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides (also known as Gang of Four)Thinking in Patterns with Java, by Bruce EckelThinking in Patterns with C++, by Bruce Eckel