Java Design Patterns Deep Dive LIVE - June 2020
From the 1-5 June 2020, we are running our Java Design Patterns Deep Dive Course LIVE.
(Note: This is an abridged version of our full Java Design Patterns Course to make it fit into the available time.)
Abstract
Design Patterns have become the standard way that we think about object oriented software development. They are the secret weapon every successful Java programmer uses to write code that is reusable, extensible and easy to maintain.
During this course, we study some of the most useful Gang-of-Four design patterns: Builder, Memento, Proxy, Strategy, Composite, Visitor, Command, Decorator, State, and Chain of Responsibility.
After learning each design pattern, we do practical hands-on exercises to apply what we have learned.
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?
We have two sessions per day with the same content (but most likely, different student questions). The early session is scheduled at a good time for Europe/APAC from 10am-12pm London time (that is 11am-1pm Berlin, 2:30-4:30pm Bangalore, and 7-9pm Sydney). The later session is at a time more convenient for America/Europe from 9-11am Los Angeles time (that is 12-2pm New York, 5-7pm London, 6-8pm Berlin, 9:30-11:30pm Bangalore).
Some sessions can be shorter than 2 hours, and some may be a bit longer. We try our best to keep it below 2 hours. It all depends on how many questions we get. Each session ends with exercises that you should try to complete before the next session. We begin the sessions with walkthroughs and questions from the previous day. Recordings of each day become available within a couple of hours after completion to help you review and prepare for the next day.
Once you enrol in this course, you are automatically signed 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).
This is a portion of the full Java Design Patterns course covering some of our favourite patterns.
Schedule
Day 1
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
2: Memento
- Intent, Motivation
- Avoiding memory leaks
- Serialization
- Known uses in the JDK
Exercises for day 1 to complete before day 2
- Coding exercises creating builders and mementos.
Day 2
Exercise walkthrough
- We will walk through the exercises from day 1 and do a quick revision
3: Proxy
- Intent, Motivation
- Virtual proxy
- Dynamic proxy
- Known uses in the JDK
4: Strategy
- Intent, Motivation
- Polymorphism vs strategy
- Known uses in the JDK
5: Composite
- Intent, Motivation
- Part-whole hierarchies
- Known uses in the JDK
Exercises for day 2 to complete before day 3
- Coding exercises with virtual and dynamic proxies, refactoring spaghetti code to strategy, and iterating over a composite structure.
Day 3
Exercise walkthrough
- We will walk through the exercises from day 2 and do a quick revision
6: Visitor
- Intent, Motivation
- Annotation processing
- Known uses in the JDK
6b: Default Visitor
- Intent, Motivation
- Comparison to GoF visitor
- Extensibility
- Known uses in the JDK
7: Command
- Intent, Motivation
- Lambdas and method references
- Composite commands
- Known uses in the JDK
Exercises for day 3 to complete before day 4
- Coding exercises adding a visitor to a composite, then refactoring that to a default visitor, and creating command actions for devices.
Day 4
Exercise walkthrough
- We will walk through the exercises from day 3 and do a quick revision
8: Decorator
- Intent, Motivation
- Object model
- Client view
- Known uses in the JDK
9: State
- Intent, Motivation
- Use cases in the real world
- Complexity
- Known uses in the JDK
10: Chain of Responsibility
- Intent, Motivation
- Unmanaged requests
- Known uses in the JDK
Exercises for day 4 to complete before day 5
- Coding exercises mixing decorators with iterables, creating a state machine, and creating a chain of object mappers.
Day 5
Exercise walkthrough
- We will walk through the exercises from day 4 and do a quick revision
11: Conclusion
- Course wrap-up and next steps
Preparation
- 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
Your Instructor
Heinz Kabutz is the author of The Java Specialists’ Newsletter, a publication enjoyed by tens of thousands of Java experts in over 150 countries. He has been a Java Champion since 2005.
Course Curriculum
-
StartSession 1 (AM) Intro, Builder, Memento (123:04)
-
StartSession 1 (PM) Intro, Builder, Memento (120:15)
-
StartSession 2 (AM) Proxy, Strategy, Composite (128:39)
-
StartSession 2 (PM) Proxy, Strategy, Composite (124:25)
-
StartSession 3 (AM) Visitor, Default Visitor, Command (103:42)
-
StartSession 3 (PM) Visitor, Default Visitor, Command (105:41)
-
StartSession 4 (AM) Decorator, State, Chain of Responsibility (108:56)
-
StartSession 4 (PM) Decorator, State, Chain of Responsibility (110:03)
-
StartSession 5 (AM) Conclusion (97:23)
-
StartSession 5 (PM) Conclusion (100:39)