Design Pattern Categorization:
It is recommended using this table as reference, but do remember that there are a number of additional patterns that are not mentioned here.
A brief note on classes
There will be patterns in this table that reference the concept of "classes". Javascript is a class-less language, however classes can be simulated using functions. The most common approach to achieving this is by defining a javascript function where we then create an object using the 'new' keyword. 'this' can be used to help new properties and methods for the object as follows:
function Car( model ) {
this.model = model;
this.color = "silver";
this.year = "1988"; this.getInfo = function(){
return this.model + " " + this.year;
}; }
We can then instantiate the object using the Car constructor we defined above like this:
var my Car = new Car("ford");
myCar.year = "2016";
console.log( myCar.getInfo() );
function Car( model ) {
this.color = "silver";this.model = model;
this.year = "1988"; this.getInfo = function(){
return this.model + " " + this.year;
}; }
We can then instantiate the object using the Car constructor we defined above like this:
var my Car = new Car("ford");
myCar.year = "2016";console.log( myCar.getInfo() );
Class | |
Factory Method | This makes an instance of several derived classed based on interfaced data or events. |
Object | |
Abstract Factory | Creates an instance of several families of classes without detailing concrete classes. |
Builder | Separates object construction from its representation, always creates the same type of object. |
Prototype | A fully initialized instance used for copying or cloning. |
Singleton | A class with only a single instance with global access points |
Class | |
Adapter | Matching interfaces of different classes therfore classes can work together despite incompitable interfaces. |
Object | |
Adapter | Matches interfaces of different classes therfore classes can work together despite incompitable interfaces. |
Bridge | Separates an objects interface from its implementation so the two can vary independently. |
Composite | A structure of simple and composite objects which makes the total object more than just the sum of its parts. |
Decorator | Dynamically add alternate processing to objects. |
Facade | A single class that hides the complexity of an entire subsystem. |
Flyweight | A fine-grained instance used for efficient sharing of information that is contained elsewhere. |
Proxy | A place holder object presenting the true object. |
Class | |
Interpreter | A way to include language elements in an application to match the grammer of the intended language. |
Template Method | Creates the shell of an algorithm in a method, then defer the exact steps to a subclass. |
Object | |
Chain of responsibility | A way of passing a request between a chain of objects to find the object that can hable the request. |
Command | Encapsulate a command request as an object to enable, logging and /or queing of request, and provides error-handling for unhandled requests. |
Iterator | Sequentially access the elements of a collection without knowing the inner workings of the collection. |
Mediator | Defines simplified communication between classes to prevent a group of classes from referring explicilty to each other. |
Memento | Capture an object's internal state to be able to restore it later. |
Observer | A way of notifying change to a number of classes to ensure consistency between the classes. |
State | Alter an object's behavior when its state changes. |
Strategy | Encapsulates an algorithm inside a class separating the selection from the implementation. |
Visitor | Adds a new operation to a class without changing the class. |