Design Patterns
Design patterns are recurring solutions to software design problems you find
again and again in real-world application development. Patterns are about design
and interaction of objects, as well as providing a communication platform
concerning elegant, reusable solutions to commonly encountered programming
challenges.
The Gang of Four (GoF) patterns are generally considered the foundation for
all other patterns. They are categorized in three groups: Creational,
Structural, and Behavioral.
Creational Patterns
Creational class patterns
defer some part of object creation to subclasses, while Creational object
patterns defer to another object.
- 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 initialised instance to be copied or
cloned
- Singleton – A class of which only a single instance can
exist
Structural Patterns
The Structural class patterns
use inheritance to compose classes, while the Structural object patterns
describe ways to assemble objects.
- 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
Behavioural Patterns
The Behavioural class
patterns use inheritance to describe algorithms and flow of control, whereas the
Behavioural object patterns describe how a group of objects co-operate to
perform a task that no single object can carry out alone.
- Chain of Responsibility – 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 behaviour when its state changes