JGym.IO Live - Design Patterns Deep Dive - 8-9 December 2020

Design patterns are taught in most university computer science curricula. Unfortunately professors often underestimate their importance in real world systems. Design patterns are prolific in the Java development kit (JDK). To become master Java programmers, we need a deep understanding of patterns. This increases our vocabulary and helps us understand other designs faster.

We have been teaching patterns since 2001 and have found this set of design patterns to be the most useful. We also have a longer 4-day course that covers all the GoF patterns (and then some). This is available for self-study or as a booked in-house course.

This course includes two live sessions of 4 hours each on the 8th and 9th of December 2020 with Dr Heinz M. Kabutz. Each pattern has exercises to solve. Heinz shows model solutions and is always happy to answer your questions.

What you'll learn - and how you can apply it

  • Would you like to know how a Java Specialist thinks whilst designing a Java system?
  • Have you ever wondered where the Gang-of-Four Design Patterns fit into Java?
  • Has your project become unpleasant due to maintenance issues?
  • Ever wanted to get rid of copy & paste code and those pesky switch and if-else statements?
  • Would you like a richer design vocabulary to improve your team communication?

How do these LIVE classes work?

Our LIVE classes consist of two 4-hour sessions. They are highly interactive, with exercises, discussions, and walkthroughs of the solutions. Sessions are not recorded. We welcome questions at any time during the live session.

Each 4-hour session runs from 7am to 11am Los Angeles Time.

Once you enrol in this course, we will sign you up for the webinar. Our system will send you login details. These are personal to you so please do not share them (otherwise you might lose access to the course).

LIVE Class Calendar


Course Outline

0: Welcome

  • Welcome to the course and overview of what design patterns are and why we should care about them

1: Builder

  • Intent, Motivation
  • Effective Java vs GoF
  • Polymorphic builder
  • Known uses in the JDK
  • Exercise creating a builder

2: Memento

  • Intent, Motivation
  • Avoiding memory leaks
  • Serialization
  • Known uses in the JDK
  • Exercise creating and using a memento

3: Proxy

  • Intent, Motivation
  • Virtual proxy
  • Dynamic proxy
  • Known uses in the JDK
  • Exercise with virtual and dynamic proxies

4: Strategy

  • Intent, Motivation
  • Polymorphism vs strategy
  • Known uses in the JDK
  • Exercise refactoring spaghetti code to Strategy

5: Composite

  • Intent, Motivation
  • Part-whole hierarchies
  • Known uses in the JDK
  • Exercise iterating over a composite structure

6: Visitor

  • Intent, Motivation
  • Annotation processing
  • Known uses in the JDK
  • Exercise adding a visitor to a composite

6b: Default Visitor

  • Intent, Motivation
  • Comparison to GoF visitor
  • Extensibility
  • Known uses in the JDK
  • Exercise refactoring the visitor to a default visitor

7: Command

  • Intent, Motivation
  • Lambdas and method references
  • Composite commands
  • Known uses in the JDK
  • Exercise creating command actions for devices

8: Decorator

  • Intent, Motivation
  • Object model
  • Client view
  • Known uses in the JDK
  • Exercise mixing decorators with iterables

9: State

  • Intent, Motivation
  • Use cases in the real world
  • Complexity
  • Known uses in the JDK
  • Exercise creating a state machine

10: Chain of Responsibility

  • Intent, Motivation
  • Unmanaged requests
  • Known uses in the JDK
  • Exercise creating a chain of object mappers

11: Conclusion

  • Course wrap-up and next steps


  • This training is for beginner to intermediate Java programmers wishing to become better at writing reusable code.
  • Students should download and install the exercises found in the Resources chapter of the course material.

Recommended Reading

  • "Head First Design Patterns" by Eric Freeman, Elisabeth Robson, Bert Bates
  • "Design Patterns - Elements of Reusable Object-Oriented Software" by Erich Gamma, Richard Helm, Ralph E. Johnson, John Vlissides
  • "Pattern Hatching - Design Patterns Applied" by John M. Vlissides

Get started now!

Your Instructor

Dr Heinz M. Kabutz
Dr Heinz M. Kabutz

Heinz Kabutz is the author of The Java Specialists’ Newsletter, a publication enjoyed by tens of thousands of Java experts in over 145 countries. His book “Dynamic Proxies (in German)” was #1 Bestseller on Amazon.de in Fachbücher für Informatik for about five minutes until Amazon fixed their algorithm. Thanks to a supportive mother, he has now sold 5 copies.

Heinz’s Java Specialists’ newsletter is filled with amusing anecdotes of life on the Island of Crete. He is a popular speaker at all the best Java conferences around the world, and also at some of the worst. He teaches Java courses in classrooms around the world, where his prime objective is to make absolutely sure that none of his students fall asleep. He is not always successful.

Frequently Asked Questions

How long do I have access to a fully paid course?
How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own. Furthermore, if we move to another platform, we will offer you a free transfer of your account for all the courses that you have purchased.
How many times can I cancel and rejoin a subscription course?
To prevent abuse, we limit the number of times that you can cancel and rejoin our subscription based courses to three times.
What is the difference between a subscription, paying in installments and an outright purchase?
With a subscription, you never own the rights to the material. If your card is declined or you cancel your subscription, you lose access to the course. The money you have paid so far is lost. Paying in installments is a bit better. You pay for 5 or 10 months and then once you have completed your installments you have lifetime access to the course. The safest is an outright purchase, where you pay the entire course in one amount. There is no risk of losing access.
Can I pay via PayPal?
Yes, you can for outright purchases, but not for recurring payments such as paying by installments or subscriptions.
Can I get an EU VAT Invoice?
Absolutely. First off, be sure to enter the VAT number in the appropriate field during the payment process. Then contact us for an EU VAT Invoice. Please tell us the receipt number for which you need the invoice.
May I share my login details with my colleagues?
Unfortunately not. The terms of usage are for a single license. Teachable tracks your progress through the curriculum, so you won't know how much you have watched. We offer a 30% discount on 50 licenses or more by one company. Please contact us for bulk licensing.
May we use the course for running in-house courses?
You may, as long as each of the students in the class has a valid license for that course. For example, some companies run lunch time Design Patterns study groups using our material. This is an effective way to learn. Please contact us for bulk licensing.
What if I am unhappy with the course?
We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 30 days and we will give you a full refund and deregister you from the course.
When does the course start and finish?
The course starts now and never ends! It is a completely self-paced online course - you decide when you start and when you finish. We do recommend putting time aside and setting goals to complete the course.
Can I watch the course offline during my commute?
Teachable have an iOS app that lets you watch offline. Android is not supported unfortunately.