# Gang of Four Design Patterns

# Creational Patterns

# Abstract Factory

Creational pattern

Abstract factory groups object factories that have a common theme, providing an interface for creating families of related or dependent objects without specifying their concrete classes

  • Abstract factories are like "super factories" that create other factories

# Sources

# Builder

Creational pattern

Builder constructs complex objects by separating construction and representation.

# Factory Method

Creational pattern

Factory method creates objects without specifying the exact class to create. Also called the Virtual Constructor

# Sources

# Prototype

Creational pattern

Prototype creates objects by cloning an existing object

# Singleton

Creational pattern

Singleton restricts object creation for a class to only one instance

# Structural Patterns

# Adapter

Structural pattern

Adapter allows classes with incompatible interfaces to work together by wrapping its own interface around that of an already existing class

# Bridge

Structural pattern

Bridge decouples an abstraction from its implementation so that the two can vary independently.

# Composite

Structural pattern

Composite composes zero-or-more similar objects so that they can be manipulated as one object

# Decorator

Structural pattern

Decorator dynamically adds/overrides behavior in an existing method of an object

# Facade

Structural pattern

Facade provides a simplified interface to a large body of code

# Flyweight

Structural pattern

Flyweight reduces the cost of creating and manipulating a large number of similar objects

# Proxy

Structural pattern

Proxy provides a placeholder for another object to control access, reduce cost, and reduce complexity

# Behavioral Patterns

# Chain of Responsibility

Behavioral pattern.

Chain of responsibility delegates commands to a chain of processing objects.

# Command

Behavioral pattern.

Command creates objects which encapsulate actions and parameters.

# Interpreter

Behavioral pattern.

Interpreter implements a specialized language.

# Iterator

Behavioral pattern

Iterator accesses the elements of an object sequentially without exposing its underlying representation.

# Mediator

Behavioral pattern

Mediator allows loose coupling between classes by being the only class that has detailed knowledge of their methods.

# Memento

Behavioral pattern

Memento provides the ability to restore an object to its previous state (undo).

# Observe

Behavioral pattern

Observer is a publish/subscribe pattern which allows a number of observer objects to see an event.

# State

Behavioral pattern

State allows an object to alter its behavior when its internal state changes.

# Strategy

Behavioral pattern

Strategy allows one of a family of algorithms to be selected on-the-fly at runtime.

# Template

Behavioral pattern Template method defines the skeleton of an algorithm as an abstract class, allowing its subclasses to provide concrete behavior.

# Visitor

Behavioral pattern

Visitor separates an algorithm from an object structure by moving the hierarchy of methods into one object.

Last Updated: 4/30/2021, 1:08:41 PM