Available as an in-house seminar
Note: This seminar has changed quite significantly from the previous "Objects and
Patterns" seminar from which it was spawned. If you are a prior attendee of "Objects and
Patterns," you may take this seminar at 1/2 of the current registration price.
This exercise-based workshop gives you a solid grounding in the
principles of Design Patterns, as introduced in the so called "Gang of
Four" (GoF) book, and expressed in Java in Bruce Eckel's book Thinking in
Patterns, a preliminary version of which you can find here. The seminar structure and exercises are
based on the Thinking in Patterns book.
Prior to the seminar, I will be updating Thinking in Patterns
to conform to the features available in J2SE5. Necessary J2SE5 features will be introduced during
The workshop combines lectures and guided exercises to
demonstrate how object-oriented design with patterns can work in a
Probably the most important step forward in object-oriented design is the
"design patterns" movement, chronicled in Design Patterns, by Gamma,
Helm, Johnson & Vlissides (Addison-Wesley 1995). That book shows 23
different solutions to particular classes of problems. In this seminar, the
basic concepts of design patterns will be introduced along with examples in
Java, looking at Patterns with a Java perspective. This should whet your
appetite to read Design Patterns (a source of what has now become an
essential, almost mandatory, vocabulary for OOP programmers).
The material in this seminar shows design patterns that have been used in the
Java Standard Libraries, and also follows the Design Patterns material
in Thinking in Patterns, a preliminary version of which you can find at this link. The best way to find out the
contents of the seminar is to download the book.
Each lecture presents one or more patterns from a Java-centric viewpoint:
- The motivation behind the pattern (Why do you want to use it? What problem does it solve?)
- The structure of the pattern
- One or more examples that use the pattern.
Each lecture is followed by a one or more patterns exercises for you to solve,
where you are guided to write code to apply particular patterns to the solution
of programming problems.
The final presentation is an example of the design evolution process,
starting with an initial solution and moving through the logic and process of
evolving the solution to more appropriate designs. The last project shown (a
trash recycling simulation) has evolved over time, and you can look at that
evolution as a prototype for the way your own design can start as an adequate
solution to a particular problem and evolve into a flexible approach to a class
- Dramatically increase the flexibility of your designs
- Build in extensibility and reusability
- Create denser communications about designs using the language of patterns
A high degree of comfort with object-oriented terminology. Implementation
experience with Java.
Thinking in Java, 3nd
Edition, by Bruce Eckel
Bruce Eckel's Hands-On
Recommended Reading (before the seminar):
Chapter 1 of Design Patterns: Elements of Reusable Object-Oriented
Software, by Gamma et al.
Thinking in Patterns, a preliminary version of which you can find here. (This material
will be evolving over time).
What you should bring:
Your notebook computer with the latest Java JDK5 development environment loaded and tested.
Make sure you also download and install the JDK html documentation.
A willingness to actively participate in group activities.