Design Pattern
Creational Patterns
Pattern | Description | Image |
---|---|---|
Abstract Factory | Creates an instance of several families of classes | ![]() |
Builder | Separates object construction from its representation | ![]() |
Factory Method | Creates an instance of several derived classes | ![]() |
Prototype | A fully initialized instance to be copied or cloned | ![]() |
Singleton | A class of which only a single instance can exist | ![]() |
Structural Patterns
Pattern | Description | Image |
---|---|---|
Adapter | Match interfaces of different classes | ![]() |
Bridge | Separates an object’s interface from its implementation | ![]() |
Composite | A tree structure of simple and composite objects | ![]() |
Decorator | Add responsibilities to objects dynamically | ![]() |
Facade | A single class that represents an entire subsystem | ![]() |
Flyweight | A fine-grained instance used for efficient sharing | ![]() |
Proxy | An object representing another object | ![]() |
Behavioral Patterns
Pattern | Description | Image |
---|---|---|
Chain of Resp. | A way of passing a request between a chain of objects | ![]() |
Command | Encapsulate a command request as an object | ![]() |
Interpreter | A way to include language elements in a program | ![]() |
Iterator | Sequentially access the elements of a collection | ![]() |
Mediator | Defines simplified communication between classes | ![]() |
Memento | Capture and restore an object's internal state | ![]() |
Observer | A way of notifying change to a number of classes | ![]() |
State | Alter an object's behavior when its state changes | ![]() |
Strategy | Encapsulates an algorithm inside a class | ![]() |
Template Method | Defer the exact steps of an algorithm to a subclass | ![]() |
Visitor | Defines a new operation to a class without change | ![]() |