The Java Design Patterns Course

Understand the how and the why of the gang of four design patterns using Java.
The Java Design Patterns Course
File Size :
8.92 GB
Total length :
23h 57m



Tim Buchalka's Learn Programming Academy


Last update




The Java Design Patterns Course

What you’ll learn

Understand all 23 of the Gang of Four’s design patterns and how to implement them in Java.
Be able to demonstrate industry best practices in the implementations of Java design patterns code you write.
Obtain a solid understanding of what design patterns are, how to implement them but also WHY you should!
Acquired the design patterns skills you need to become a senior Java developer.

The Java Design Patterns Course


You should have a general understanding of Java – ideally by going through this channels Java Crash Course or Java Masterclass
A Windows computer, Linux machine, or a Mac so that the free IDE can be downloaded and install (full instructions included).
An open mind to learn something new and exciting which may make a huge difference in your future career.


So you have some Java experience under your belt, but are trying to figure out what to do next to make it easier to get that next job or consulting gig, and to stand out from the crowd.Maybe you have heard of design patterns before and have seen programmers who know them and are able to implement them are held in very high regard.One thing is clear, Java programmers with design pattern experience are in high demand.  Design patterns are heavily used in the real world, so it’s essential that Java programmers learn how to identify design patterns and implement them.And that’s what you are going to learn in this course!Perhaps you tried to learn about design patterns in the past, but struggled to understand them.  This course is going to give you the core design patterns experience you need!This course is unique in comparison to other design patterns courses.Why?  It not only teaches how to use design patterns, but perhaps more importantly, it teaches why you should use them!  Why they are the best approach and how using them can make you a super productive and awesome Java Programmer.The reality is that Java developers who truly understand how to use design patterns are in high demand. So what specifically is included in this course?This course focuses on the details and a thorough understanding of all design patterns from the Gang of four.Who are the Gang of four?Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides released a book in 1994 that was and is still considered a classic.  The concepts are still very relevant in 2019!This course is all about showing you how to use their design patterns in todays software development environment.You will learn detailed aspects of common design patterns (23 from the Gang of four) using the Java programming language.Why should I bother with Design Patterns?In programming terms, a design pattern is a solution to a common problem that occurs when writing software.  Think of it as more like a template than actual code – its a how-to to solve a problem that can be re-used in many different situations.Using design patterns gives you a way to solve common problems with a proven solution!  So learning java design patterns and architecture and being able to use and implement them are critical to take your Java programming to new levels.What you will learn in this course.You will learn how to implement specific design patterns in addition to learning why they are the best approach and how they make you a super productive and awesome Java programmer. Many, many examples and challenges are provided to test your understanding of every pattern that you have learned. This course is unique to other courses here at Udemy in that the details and the why are explained. We do not just go through projects and provide a how-to.  You will learn WHY you should be using a particular design pattern and the benefits to doing so.Jason Fedin, you instructor is an expert Java developer, and has one of the most popular C programming languages on Udemy (published on this channel).As a professional programmer, with over 18 years of commercial experience, you can be assured you are learning from a true professional and learning the real-world skills you need to know to succeed.If you are ready to get started, click on that enroll button and start taking your Java skills to new levels!


Section 1: Introduction

Lecture 1 Welcome to Class!

Lecture 2 Class Organization

Lecture 3 Overview

Lecture 4 Advantages of Design Patterns

Lecture 5 Types of Design Patterns

Lecture 6 Selecting and Using Design Patterns

Section 2: Installing Required Software

Lecture 7 Install JDK for Windows

Lecture 8 Installing and Configuring IntelliJ IDEA on Windows

Lecture 9 Installing JDK 11 on a Mac

Lecture 10 Installing and Configuring IntelliJ IDEA on a Mac

Lecture 11 Installing JDK 11 on a Linux Machine

Lecture 12 Installing and Configuring IntelliJ IDEA on a Linux Machine

Section 3: Principles and Strategies of Design

Lecture 13 Overview

Lecture 14 Design Smells

Lecture 15 Programming to an interface

Lecture 16 Using Composition Over Inheritance

Lecture 17 Delegation Principles

Lecture 18 The Single Responsibility Principle

Lecture 19 The Open Closed Principle

Lecture 20 The Liskov Substitution Principle

Lecture 21 The Interface Segregation Principle

Lecture 22 Dependency Inversion

Lecture 23 Dependency Injection

Section 4: UML

Lecture 24 Overview

Lecture 25 Class Diagrams

Lecture 26 Drawing a Class Diagram

Lecture 27 Example Class Diagrams

Section 5: Creational Design Patterns

Lecture 28 Overview

Section 6: Factory Method

Lecture 29 Overview

Lecture 30 Implementation (Abstract Creator)

Lecture 31 Implementation (Concrete Creator)

Lecture 32 Implementation (Static Method Creator)

Lecture 33 (Challenge) Factory Method

Lecture 34 (Challenge Solution) Factory Method

Section 7: Abstract Factory Method

Lecture 35 Overview

Lecture 36 Implementation

Lecture 37 (Challenge) Abstract Factory Method

Lecture 38 (Challenge Solution) Abstract Factory Method

Section 8: Singleton

Lecture 39 Overview

Lecture 40 Singleton vs. Dependency Injection

Lecture 41 Implementation Overview

Lecture 42 Implementation (Lazy Evaluation)

Lecture 43 Implementation (Synchronized method)

Lecture 44 Implementation (Double Checked Locking)

Lecture 45 Implementation (Eager Evaluation)

Lecture 46 Implementation (Bill Pugh)

Lecture 47 (Challenge) Singleton

Lecture 48 (Challenge Solution) Singleton

Section 9: Builder

Lecture 49 Overview

Lecture 50 Implementation (Overview)

Lecture 51 Implementation (Example)

Lecture 52 (Challenge) Builder

Lecture 53 (Challenge Solution) Builder

Section 10: Prototype

Lecture 54 Overview

Lecture 55 Implementation

Lecture 56 Problems with the Cloneable Interface

Lecture 57 (Challenge) Prototype

Lecture 58 (Challenge Solution) Prototype

Section 11: Structural Design Patterns

Lecture 59 Overview

Section 12: Adapter

Lecture 60 Overview

Lecture 61 Object Adapter Implementation

Lecture 62 Object Adapter (Turkey/Duck Example)

Lecture 63 Object Adapter (Calculator/Triangle Example)

Lecture 64 Class Adapter Implementation

Lecture 65 ClassAdapter Example

Lecture 66 (Challenge) Adapter

Lecture 67 (Challenge Solution) Adapter

Section 13: Bridge

Lecture 68 Overview

Lecture 69 Implementation (Overview)

Lecture 70 Implementation (Example)

Lecture 71 (Challenge) Bridge

Lecture 72 (Challenge Solution) Bridge

Section 14: Composite

Lecture 73 Overview

Lecture 74 Implementation (Overview)

Lecture 75 Implementation (Example)

Lecture 76 (Challenge) Composite

Lecture 77 (Challenge Solution) Composite

Section 15: Decorator

Lecture 78 Overview

Lecture 79 Implementation (Overview)

Lecture 80 Implementation (File I/O Example)

Lecture 81 (Challenge) Decorator

Lecture 82 (Challenge Solution) Decorator

Section 16: Facade

Lecture 83 Overview

Lecture 84 Implementation (Overview)

Lecture 85 Implementation (Example)

Lecture 86 (Challenge) Facade

Lecture 87 (Challenge Solution) Facade

Section 17: Flyweight

Lecture 88 Overview

Lecture 89 Implementation (Overview)

Lecture 90 Implementation (Example)

Lecture 91 (Challenge) Flyweight

Lecture 92 (Challenge Solution) Flyweight

Section 18: Proxy

Lecture 93 Overview

Lecture 94 Implementation

Lecture 95 (Challenge) Proxy

Lecture 96 (Challenge Solution) Proxy

Section 19: Structural Patterns Summary

Lecture 97 Summary

Section 20: Behavioral Design Patterns

Lecture 98 Overview

Section 21: Chain of Responsibility

Lecture 99 Overview

Lecture 100 Implementation

Lecture 101 (Challenge) Chain of Responsibility

Lecture 102 (Challenge Solution) Chain of Responsibility

Section 22: Command

Lecture 103 Overview

Lecture 104 Implementation (Overview)

Lecture 105 Implementation (Example)

Lecture 106 (Challenge) Command

Lecture 107 (Challenge Solution) Command

Section 23: Interpreter

Lecture 108 Overview

Lecture 109 Implementation

Lecture 110 (Challenge) Interpreter

Lecture 111 (Challenge Solution) Interpreter

Section 24: Iterator

Lecture 112 Overview

Lecture 113 Implementation

Lecture 114 (Challenge) Iterator

Lecture 115 (Challenge Solution) Iterator

Section 25: Mediator

Lecture 116 Overview

Lecture 117 Implementation (Overview)

Lecture 118 Implementation (Example)

Lecture 119 (Challenge) Mediator

Lecture 120 (Challenge Solution) Mediator

Section 26: Memento

Lecture 121 Overview

Lecture 122 Implementation (Overview)

Lecture 123 Implementation (Example)

Lecture 124 (Challenge) Memento

Lecture 125 (Challenge Solution) Memento

Section 27: Observer

Lecture 126 Overview

Lecture 127 Implementation (Overview)

Lecture 128 java.util Implementation

Lecture 129 Implementation (Example)

Lecture 130 (Challenge) Observer

Lecture 131 (Challenge Solution) Observer

Section 28: State

Lecture 132 Overview

Lecture 133 Implementation (Overview)

Lecture 134 Implementation (Example)

Lecture 135 (Challenge) State

Lecture 136 (Challenge Solution) State

Section 29: Strategy

Lecture 137 Overview

Lecture 138 Implementation (Overview)

Lecture 139 Implementation (Example)

Lecture 140 (Challenge) Strategy

Lecture 141 (Challenge Solution) Strategy

Section 30: Template Method

Lecture 142 Overview

Lecture 143 Implementation (Overview)

Lecture 144 Implementation (Example)

Lecture 145 (Challenge) Template Method

Lecture 146 (Challenge Solution) Template Method

Section 31: Visitor

Lecture 147 Overview

Lecture 148 Implementation (Overview)

Lecture 149 Implementation (Example)

Lecture 150 (Challenge) Visitor

Lecture 151 (Challenge Solution) Visitor

Section 32: Summary of Behavioral Patterns

Lecture 152 Summary of Behavioral Patterns

Section 33: MVC – Model View Controller

Lecture 153 Overview

Section 34: J2EE Patterns

Lecture 154 Overview

Section 35: Conclusion

Lecture 155 Course Summary

Section 36: Extra Information – Source code, and other stuff

Lecture 156 Source Codes

Lecture 157 Bonus Lecture and Information

If you are a beginner programmer, then this course is probably not for you. In that scenario consider taking a Java or C# crash course from this channel.,Programmers who have a reasonable understanding of the basics of Java, ready to take their skills to new levels.,Existing Java programmers who want to obtain skills in Design Patterns to move into more senior programming positions.

Course Information:

Udemy | English | 23h 57m | 8.92 GB
Created by: Tim Buchalka’s Learn Programming Academy

You Can See More Courses in the Developer >> Greetings from

New Courses

Scroll to Top