Top Banner
84

Design patterns in Javascript

Jan 25, 2015

Download

Technology

Slides of the 'Design patterns in Javascript' talk in @MadridJS

Code from talk can be found in:

https://github.com/tcorral/DesignPatterns_code

Running examples in:

http://tcorral.github.com/Design-Patterns-in-Javascript/

Code of examples in:

https://github.com/tcorral/Design-Patterns-in-Javascript
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Design patterns in Javascript
Page 2: Design patterns in Javascript
Page 3: Design patterns in Javascript
Page 4: Design patterns in Javascript

Someone has already solvedyour problems.

Page 5: Design patterns in Javascript

• Abstract those that vary.• Program to an interface not an

implementation.• Favor composition over inheritance.• Strive for loosely coupled designs

between objects that interact.• Classes should be open for extension

but closed for modification.• Depend on abstraction. Do not

depend on concrete classes.

Page 6: Design patterns in Javascript
Page 7: Design patterns in Javascript

Restricts the instanciation of a class to one object.

Page 8: Design patterns in Javascript
Page 9: Design patterns in Javascript
Page 10: Design patterns in Javascript
Page 11: Design patterns in Javascript

Avoids polluting globals.

Page 12: Design patterns in Javascript
Page 13: Design patterns in Javascript
Page 14: Design patterns in Javascript

Allow to use ‘function’ to obtain new objects.

Page 15: Design patterns in Javascript
Page 16: Design patterns in Javascript
Page 17: Design patterns in Javascript

Used to clone objects.

In Javascript is used to create inheritance.

Page 18: Design patterns in Javascript
Page 19: Design patterns in Javascript
Page 20: Design patterns in Javascript

Decouple parts of the code in modules.

Avoid failing your full application for some little error in one module.

Page 21: Design patterns in Javascript
Page 22: Design patterns in Javascript
Page 23: Design patterns in Javascript

Allows to execute more than one method at the same line.

Only one instance of object is needed.

Page 24: Design patterns in Javascript
Page 25: Design patterns in Javascript
Page 26: Design patterns in Javascript

Overwritte the behaviour of one method/functionto reduce time on further executions.

Ideal for updates.

Page 27: Design patterns in Javascript
Page 28: Design patterns in Javascript
Page 29: Design patterns in Javascript

Memoize the executions that have been done.

Reduce time on expensive jobs.

Page 30: Design patterns in Javascript
Page 31: Design patterns in Javascript

Nullify

Page 32: Design patterns in Javascript

Removes all references to local variables to avoid memory leaks.

Page 33: Design patterns in Javascript
Page 34: Design patterns in Javascript
Page 35: Design patterns in Javascript

Removes all references to local variables to avoid memory leaks when the method/function

returns something.

Page 36: Design patterns in Javascript
Page 37: Design patterns in Javascript

Adapter

Page 38: Design patterns in Javascript

Converts the interface of a class into another the clients expect.

Lets classes work together that couldn't otherwise because of incompatible interfaces.

Page 39: Design patterns in Javascript
Page 41: Design patterns in Javascript

Decorator

Page 42: Design patterns in Javascript

Attach additional responsibilities to an object dynamically.

Decorators provide a flexible alternative to subclassing for extending functionality

Page 43: Design patterns in Javascript
Page 45: Design patterns in Javascript

Factory

Page 46: Design patterns in Javascript

Defines an interface for creating an object, but lets subclasses decide which class to instanciate.

Factory Method lets a class defer instanciation to subclasses.

Page 47: Design patterns in Javascript
Page 49: Design patterns in Javascript

Observer

Page 50: Design patterns in Javascript

Defines a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.

Page 51: Design patterns in Javascript
Page 53: Design patterns in Javascript

Command

Page 54: Design patterns in Javascript

Encapsulates a request as an object, thereby letting you parameterize other objects with different requests, queue or log requests, and support

undoable operations.

Page 55: Design patterns in Javascript
Page 57: Design patterns in Javascript

Facade

Page 58: Design patterns in Javascript

Provides a unified interface to a set of interfaces in a subsystem.

Defines a higher-level interface that makes the subsystem easier to use

Page 59: Design patterns in Javascript
Page 61: Design patterns in Javascript

Mediator

Page 62: Design patterns in Javascript

Defines an object that encapsulates how a set of objects interact.

Page 63: Design patterns in Javascript
Page 64: Design patterns in Javascript
Page 65: Design patterns in Javascript

State

Page 66: Design patterns in Javascript

Allows an object to alter its behavior when its internal state changes.

The object will appear to change its class.

Page 67: Design patterns in Javascript
Page 69: Design patterns in Javascript

Strategy

Page 70: Design patterns in Javascript

Defines a family of algorithms, encapsulates eachone, and makes them interchangeable.

Page 71: Design patterns in Javascript
Page 73: Design patterns in Javascript
Page 74: Design patterns in Javascript

Compose objects into tree structures to represent part-whole hierarchies.

Lets clients treat individual objects and compositions of objects uniformly.

Page 75: Design patterns in Javascript
Page 77: Design patterns in Javascript
Page 78: Design patterns in Javascript

Separates elements of the application in layers.

Logic, data and views are separated.

Page 79: Design patterns in Javascript

M.V.C

Page 80: Design patterns in Javascript

M.V.C

Page 81: Design patterns in Javascript

M.V.V.M

Page 83: Design patterns in Javascript
Page 84: Design patterns in Javascript

http://bit.ly/softhire