| Term | Definition |
| Abstract Factory | Provides an interface for creating families of related or dependent objects without specifying their concrete classes |
| Adapter | Convert the interface of a class into another interface clients expect |
| Bridge | Decouple an abstraction from an implementation so the two can vary independently |
| Builder | Separate the construction of a complex object from its representation so that the same construction process can create different representations |
| Chain of Responsibility | Avoid coupling the sender of a request to its receiver by giving more than one object a chance to handle the request |
| Command | Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations |
| Composite | Compose objects into tree structures to represent part-whole hierarchies |
| Decorator | Attach additional responsibilities to an object dynamically |
| Facade | Provide a unified interface to a set of interfaces in a subsystem |
| Factory Method | Define an interface for creating an object, but let subclasses decide which class to instantiate |
| Flyweight | Use sharing to support large numbers of fine-grained objects efficiently |
| Interpreter | Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language |
| Iterator | Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation |
| Mediator | Define an object that encapsulates how a set of objects interact |
| Memento | Without violating encapsulation, capture and externalize an objects internal state so that the object can be resored to this state later |
| Observer | Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically |
| Prototype | Specify the kinds of objects to create using a prototypical instance, and create new objects by copying this prototype |
| Proxy | Provide a surrogate or placeholder for another object to control access to it |
| Singleton | Ensure a class only has one instance, and provide a global point of access to it |
| State | Allow an object to alter its behaviour when its internal state changes |
| Strategy | Define a family of algorithms, encapsulate each one, and make them interchangeable |
| Template Method | Define the skeleton of an algorithm in an operation, deferring some steps to subclasses |
| Visitor | Represent an operation to be performed on the elements of an object structure |