A fully initialized instance to be copied or cloned.
Solves the problem of telescoping constructor.
Facilitates the creation of other objects.
Creates an instance of several families of classes.. TypeScript: Compile code as follow: Abstract Factory TypeScript inspired from Head First Design Pattern book
A class of which only a single instance can exist.
Allows for one or more operation to be applied to a set of objects at runtime, decoupling the operations from the object structure.
Define the basic steps of an algorithm and allow the implementation of the individual steps to be changed.
Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.
A cleaner way for an object to change its behavior at runtime without resorting to large monolithic conditional statements.
Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.