Design patterns are recurring solution to
recurring problems in software architecture.
Three main categories of design patterns.
- Creational Patterns: Creational
patterns provide ways to instantiate single objects or group of related
objects.
- Structural Patterns: Structural patterns provide a way to define relationship
between classes and objects.
- Behavioral Patterns: Behavioral
Patterns define ways of communication between classes and objects.
Name of patterns fall in each Category.
Creational Patterns
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 in which only a
single instance can exist
Structural Patterns
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.
Façade: 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
Mediator: Defines simplified
communication between classes.
Memento: Capture and restore an object's
internal state.
Interpreter: A way to include language
elements in a program.
Iterator: Sequentially access the
elements of a collection.
Chain of Resp: A way of passing a request
between a chain of objects.
Command: Encapsulate a command request as
an object.
State: Alter an object's behavior when
its state changes.
Strategy: Encapsulates an algorithm
inside a class.
Observer: A way of notifying change to a number
of classes.
Template Method: Defer the exact steps of
an algorithm to a subclass.
Visitor: Defines a new operation to a
class without change.