About this tutorial
This tutorial is for Java programmers who want to learn about design patterns as a means of improving their object-oriented design and development skills. After reading this tutorial you will:
- Understand what design patterns are and how they are described and categorized in several well-known catalogs
- Be able to use design patterns as a vocabulary for understanding and discussing object-oriented software design
- Understand a few of the most common design patterns and know when and how they should be used
This tutorial assumes that you are familiar with the Java language and with basic object-oriented concepts such as polymorphism, inheritance, and encapsulation. Some understanding of the Unified Modeling Language (UML) is helpful, but not required; this tutorial will provide an introduction to the basics.
Design patterns capture the experience of expert software developers, and present common recurring problems, their solutions, and the consequences of those solutions in methodical way.
This tutorial explains:
- Why patterns are useful and important for object-oriented design and development
- How patterns are documented, categorized, and cataloged
- When patterns should be used
- Some important patterns and how they are implemented
The examples in this tutorial are all written in the Java language. It is possible and sufficient to read the code as a mental exercise, but to try out the code requires a minimal Java development environment. A simple text editor (such as Notepad in Windows or vi in a UNIX environment) and the Java Development Kit (version 1.2 or later) are all you need.
A number of tools are also available for creating UML diagrams (see Resources ). These are not necessary for this tutorial.




