There are three types of design pattern broadly categorized into.
software 2012 Creational Design Pattern: Pattern used to create objects
Singleton: Ensure that only one instance of a class is created
Factory(Simplified version of Factory Method)
Factory Method:
Abstract Factory:
Builder: Defines an instance for creation but letting subclasses decide which class to instantiate and Allows a finer control over the construction process.
Prototype: Specify to create using a prototypical instance, and create by copying this prototype.
Object Pool: Re-uses and shares that are expensive to create
Behavioral Design Patterns:
Chain of Responsibiliy: It avoids attaching the sender of a request to its receiver, giving this way others the possibility of handling the request too.
Command: Encapsulate a request, Allows the parameterization of clients with different requests and Allows saving the requests in a queue.
Interpreter: Given a language, define a representation for its grammar along with an interpreter that uses the representation to interpret sentences in the language. Map a domain to a language, the language to a grammar, and the grammar to a hierarchical design
Iterator: Provide a way to access the elements of an aggregate sequentially without exposing its underlying representation.
Mediator: Mediator promotes loose coupling from referring to each other explicitly, and it lets you vary their interaction independently.
Observer: Define a one-to-many dependency so that when one changes state, all its dependents are notified and updated automatically.
Strategy: Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from clients that use it.
Template Method: Define the skeleton of an algorithm in an operation, deferring some steps to subclasses / Template Method lets subclasses redefine certain steps of an algorithm without letting them to change the algorithm's structure.
Visitor: Represents an operation to be performed on the elements, Visitor lets you define a new operation without changing the classes of the elements on which it operates.
Null Object: It hides the detail from its collaborators.
Structural Design Patterns:
Adapter: Adapter lets classes work together, that could not otherwise because of incompatible interfaces.
Bridge:
Composite: Compose into tree structures to represent part-whole hierarchies. / Composite lets clients treat individual items and compositions uniformly.
Decorator: Add additional responsibilities dynamically.
Flyweight: Use sharing to support a large numbers that have part of their internal state in common where the other part of state can vary.
Memento: Capture the internal state without violating encapsulation and thus providing a mean for restoring the initial state when needed.
Proxy: Provide a Placeholder to control references to it.