Design Patterns in JavaScript

Discover the modern implementation of design patterns in JavaScript

4.42 (1868 reviews)
Udemy
platform
English
language
Programming Languages
category
instructor
18,030
students
10 hours
content
Aug 2021
last update
$69.99
regular price

What you will learn

Recognize and apply design patterns

Refactor existing designs to use design patterns

Reason about applicability and usability of design patterns

Description

Course Overview

This course provides a comprehensive overview of Design Patterns in JavaScript from a practical perspective. This course in particular covers patterns with the use of:

  • The latest versions of the JavaScript programming language

  • Use of modern programming libraries and frameworks

  • Use of modern developer tools such as JetBrains WebStorm

  • Discussions of pattern variations and alternative approaches

This course provides an overview of all the Gang of Four (GoF) design patterns as outlined in their seminal book, together with modern-day variations, adjustments, discussions of intrinsic use of patterns in the language.

What are Design Patterns?

Design Patterns are reusable solutions to common programming problems. They were popularized with the 1994 book Design Patterns: Elements of Reusable Object-Oriented Software by Erich Gamma, John Vlissides, Ralph Johnson and Richard Helm (who are commonly known as a Gang of Four, hence the GoF acronym).

The original book GoF book used C++ and Smalltalk for its examples, but, since then, design patterns have been adapted to every programming language imaginable: C#, Java, Swift, Python and now — JavaScript!

The appeal of design patterns is immortal: we see them in libraries, some of them are intrinsic in programming languages, and you probably use them on a daily basis even if you don't realize they are there.

What Patterns Does This Course Cover?

This course covers all the GoF design patterns. In fact, here's the full list of what is covered:

  • SOLID Design Principles: Single Responsibility Principle, Open-Closed Principle, Liskov Substitution Principle, Interface Segregation Principle and Dependency Inversion Principle

  • Creational Design Patterns: Builder, Factories (Factory Method and Abstract Factory), Prototype and Singleton

  • Structrural Design Patterns: Adapter, Bridge, Composite, Decorator, Façade, Flyweight and Proxy

  • Behavioral Design Patterns: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method and Visitor

Who Is the Course For?

This course is for JavaScript developers who want to see not just textbook examples of design patterns, but also the different variations and tricks that can be applied to implement design patterns in a modern way. For example, the use of Symbol.iterator allows objects (including iterator objects) to be iterable and lets scalar objects masquerade as if they were collections.

Presentation Style

This course is presented as a (very large) series of live demonstrations being done in JetBrains WebStorm and presented using the Kinetica rendering engine. Kinetica removes the visual clutter of the IDE, making you focus on code, which is rendered perfectly, whether you are watching the course on a big screen or a mobile phone. 

Most demos are single-file, so you can download the file attached to the lesson and run it in WebStorm, Atom or another IDE of your choice (or just run them from the command-line).

This course does not use UML class diagrams; all of demos are done via live coding.

Content

Introduction to Object-Oriented JavaScript

Introduction
Tools of the Trade

SOLID Design Principles

Overview
Single Responsibility Principle
Open-Closed Principle
Liskov Substitution Principle
Interface Segregation Principle
Dependency Inversion Principle
Summary

Builder

Gamma Categorization
Overview
Builder
Builder Facets
Builder Coding Exercise
Summary

Factory

Overview
Factory Method
Factory
Abstract Factory
Factory Coding Exercise
Summary

Prototype

Overview
Explicit Copying
Copy Through Serialization
Prototype Factory
Prototype Coding Exercise
Summary

Singleton

Overview
Singleton Implementation
Monostate
Singleton Problems
Singleton Coding Exercise
Summary

Adapter

Overview
Adapter
Adapter Caching
Adapter Coding Exercise
Summary

Bridge

Overview
Bridge
Bridge Coding Exercise
Summary

Composite

Overview
Geometric Shapes
Neural Networks
Composite Coding Exercise
Summary

Decorator

Overview
Decorator
Decorator Coding Exercise
Summary

Façade

Overview
Façade
Façade Coding Exercise
Summary

Flyweight

Overview
Text Formatting
User Names
Flyweight Coding Exercise
Summary

Proxy

Overview
Value Proxy
Property Proxy
Protection Proxy
Virtual Proxy
Proxy Coding Exercise
Summary

Chain of Responsibility

Overview
Method Chain
Command Query Separation
Broker Chain
Chain of Responsibility Coding Exercise
Summary

Command

Overview
Command
Command Undo
Command Coding Exercise
Summary

Interpreter

Overview
Lexing
Parsing
Interpreter Coding Exercise
Summary

Iterator

Overview
Array Backed Properties
Iterator
Tree Traversal
Iterator Coding Exercise
Summary

Mediator

Overview
Chat Room
Mediator with Events
Mediator Coding Exercise
Summary

Memento

Overview
Memento
Undo and Redo
Memento Coding Exercise
Summary

Observer

Overview
Events
Property Observers
Property Dependencies
Observer Coding Exercise
Summary

State

Overview
Classic State
Handmade State Machine
State Coding Exercise
Summary

Strategy

Overview
Strategy
Strategy Coding Exercise
Summary

Template Method

Overview
Template Method
Template Method Coding Exercise
Summary

Visitor

Overview
Intrusive Visitor
Reflective Visitor
Classic Visitor
Visitor Coding Exercise
Summary

Course Summary

Course Summary

Screenshots

Design Patterns in JavaScript - Screenshot_01Design Patterns in JavaScript - Screenshot_02Design Patterns in JavaScript - Screenshot_03Design Patterns in JavaScript - Screenshot_04

Reviews

Dhivya
October 26, 2023
This course is beneficial. It gave me a good understanding of design patterns in JavaScript. It's a really helpful one.
Jean
September 25, 2023
The idea of the course and the division of topics is great. The explanations are also nice. However, the course is presented with examples that don't make a lot of sense and are executed with no regards to best practices or good readability in Javascript. Also, the idea of having coding exercises is great, but the challenges could be much more adequate to the subject.
Jamie
September 18, 2023
The instructor talks quickly and reviews the concepts too quickly to follow along. I used the playback speed to slow down the action, but it's still a little difficult to follow. In the first segment, he discussed the concept but only gave one example of the principle. By offering even one more example of the Single Responsibility Principle there would be a clearer demonstration of the concept.
Vladimir
August 15, 2023
Great course to get familiar with methods for handling everyday programming challenges. Coding exercises could provide more explanation of what is expected and what the test will look like.
Ankur
August 8, 2023
very bad examples taken to explain each cases. Also very speedy coding to understand. Soo much code making the topics hard to understand.
Jitendra
July 28, 2023
Instead of using more scientific example, need to use simple terms like Person, Car etc. that can be imagine by everyone. I see it has been used but not with all patterns so difficult to follow or aligned. There should be an UML diagram before start lecture so difficult to know what and how exactly going to implement. BUT teacher explanation is really good.
Christian
May 26, 2023
Now in the middle of the course, with some patterns it seems difficult to follow some examples. Overall, the course is great!
Summer
April 20, 2023
The concepts are explained fairly well. However, he author talks and types quite fast so it's a bit hard to understand what he's explaining. On the bright side every video has resources that can be downloaded so you don't have to actually code along but can download the specific file he's talking about and follow along like that. I also had problems with some of the exercises (typing letters would type 2,3, or more at the same time) but that's probably a Udemy bug.
Ruslan
April 7, 2023
In general the course is good. Pros: 1) All patterns explained in details 2) Coding tasks for each pattern Cons: 1) The screen in the lectures is very zoomed. It is hard to understand the code, because you alway see only ~6 lines of code 2) Some of the patterns has uninteresting examples
Pandurengan
January 17, 2023
without the explaining the principles, directly work out on the code is difficult to understand in solid principles section.
Anmol
December 22, 2022
course is good. examples and code provided. Could have been a lot better if some flowchart or code diagrams were provided and explained initially first before going in the code, it was difficult to understand till you watch it at the end. Need to be watched multiple times to understand fully. But, overall is good course. Thanks.
Jofre
December 14, 2022
I was bored at the beginning because the main idea was "javascript don't have neither interfaces or static clases so we can bend the things and try to simulate the pattern.". But I really enjoyed the explanation of Structural and Behavioral patterns.
Elvin
December 8, 2022
Dmitry is very talented programmer but how he explains particularly "Design Patterns in JavaScript" course is awful. After each single Section, I have to go to YouTube and search for a particular pattern. And those guys with Indian accent explains more clearly than Mr. Nesteruk. Hope this make sense, Dmitry. Unfortunately I can not return this course.
Paulo
December 1, 2022
The explanation is good but leaves many gaps, which only those with a lot of experience with the language will understand. Many issues are raised and explained superficially or with little additional information. Also, there are times when the instructor gets bogged down in explaining some concepts. It seems that sometimes it dumps all the content at once. I had to replay some videos several times until I understood some parts. That's because I've been working with JavaScript for over 5 years. Imagine a beginner.
Pablo
November 22, 2022
I don't give full 5 stars because I think the coding tests could be improved, having some more to train ourselves would be amazing and some are too simple while the lesson is much more complex. I know this isn't an interview training, however, to solidify the concepts in our heads, exercises might be the best way.

Charts

Price

Design Patterns in JavaScript - Price chart

Rating

Design Patterns in JavaScript - Ratings chart

Enrollment distribution

Design Patterns in JavaScript - Distribution chart
2251868
udemy ID
3/3/2019
course created date
11/21/2019
course indexed date
Bot
course submited by