About this tutorial
The developerWorks tutorial series on design patterns began with the tutorial "Java design patterns 101," which explored the history and common structure of published design patterns for the Java language. As a general introduction, that tutorial focused on some of the most well-known design patterns, those devised by the so-called Gang of Four. The Gang of Four (GOF) patterns apply to general computing problems and can be implemented for a variety of applications and systems. The GOF patterns are ubiquitous: in any modern, well-designed system, you will likely see one or more of these patterns implemented. Many people consider themselves well-versed in object-oriented design patterns if they know the GOF patterns. But design patterns extend far beyond the GOF.
In this tutorial, you will find out just how much you don't know about design patterns. We'll start by exploring a number of resources that newcomers to the study of design patterns often miss. These resources provide patterns that are invaluable to various domains of computing, such as business applications, Web applications, and even Web design. Next, we'll use design patterns found through some of these resources to implement a simple application that allows a user to order movies from a Web site. After we've implemented the movie-ordering application, we'll move into the third part of the tutorial, where we'll focus on how design patterns can help us to better understand software design. To see for ourselves how the knowledge of design patterns translates to deeper understanding of software, we'll reverse-engineer a piece of technology, focusing on how it works from the perspective of patterns.
By the end of this tutorial, you will have a much greater appreciation of the wealth of knowledge available in design patterns. You will also know how to locate and disseminate the knowledge given to us in the GOF patterns, as well as several Java design pattern implementations outside of the realm of the GOF. Throughout the tutorial, we'll emphasize the ways that design patterns can assist you in learning about software.
This tutorial expands upon the Java design patterns 101 tutorial, examining a broad range of design pattern resources and several specific design patterns in detail and implementation.
Although this tutorial is entirely Java-based, design pattern documentation outside of this tutorial is often in C++. To extend your knowledge of the patterns presented here, you will likely need an average skill level in C++.
See Resources for a listing of tutorials, articles, and other references that extend the material presented here.
Code samples and installation requirements
We'll use the following technologies and resources to complete the exercises in this tutorial:
- A heavily referenced set of text and online resources for design pattern
documentation.
- The Java 2 platform, Standard Edition to implement the tutorial's
two simple business pattern examples.
- A standard editor and a JDK to compile and run the examples.
- Tomcat 4.0.3 Servlet Engine to deploy the Web application and JSP Tag library examples. (Note that Tomcat has all the classes you will need for the J2EE portion of this tutorial.)
See Resources to download any of the above technologies that you do not have. I also suggest that you download the binaries and source code for the examples before you start the tutorial.

