Solving problems using

design patterns

What is design?

Design is the creation of a plan or convention for the construction of an object, system or measurable human interaction

What are patterns?

A pattern is a discernible regularity in the world or in a manmade design. As such, the elements of a pattern repeat in a predictable manner.

What is a design pattern in software engineering?

A general reusable solution to a commonly occurring problem within a given context in software design.

 

It is not a finished design that can be transformed directly into source or machine code.

 

It is a description or template for how to solve a problem that can be used in many different situations.

Context

Day 0

The Request

User data is hard to ask for. Write a function that gets user data from lots of services and aggregates it

The Problem

User data is sparse (some fields might not exist), and irregular. It is difficult to work with objects that might contain incomplete or missing data.

Default Parameters &

Parameter Destructuring

codepen demo

Day 1

The Request

FakeBlock is extremely privacy focused, create a user object which contains a full birthdate, but only exposes the day and month.

The Problem

Javascript doesn't have a concept of public and private data members, in fact it doesn't really even have a concept of classes

The Revealing Module Pattern

codepen demo

Day 2

The Request

Add a comment feature to images

The Problem

Repetitive work is hard to maintain, leads to copy-paste-errors, JavaScript inheritance patterns can be deceptive

 

Combining (composing) functionality can be difficult and hard to keep compatible.

Add a comment feature to ads

 

Add a like feature to posts

Combine comments and likes to create enhanced posts

The -inator pattern

 

AKA decorator or mixin pattern

 

codepen demo

More Slides

 

HTTP://SLIDES.COM/CORYBROWN/CLASSICAL-INHERITANCE

Day 3

The request

We need a way to notify several services when someone comments: send to database, clear the cache, search for NSA keywords

The Problem

Your comment feature only has one callback to be executed on completion, and you don't want to refactor it every time a new notification request comes in

Pub Sub

Publish Subscribe

 

Codepen demo

Many Design Patterns

Not complete solutions, just repeatable solutions

 

https://addyosmani.com/resources/essentialjsdesignpatterns/book/

Made with Slides.com