Design patterns are one of the most important, challenging, and useful topics in software. No object‐
oriented programmer would be complete without proper knowledge of common design patterns.
Good knowledge provides a great toolset for common problems you are likely to face. Java EE
takes this a step further and introduces a much easier and integrated way to use design patterns
in enterprise projects. Most patterns in Java EE have been introduced after long debates and pain,
which ensures they are well implemented and mature.
All patterns described in this topic rely on Java EE standards, so they are almost guaranteed to
Still, patterns are neither silver bullets nor magic wands. If they are used extensively without reason,
they tend to overcomplicate the project. Knowing a pattern does not necessarily mean you have to
use it unless you know it i ts and solves a potential problem.
Read and learn design patterns, and try to keep your memory fresh on where they i t and what
problems they solve. You will save many lines of code and earn respect.
1. Design Patterns: Elements of Reusable Object‐Oriented Software (Addison‐Wesley, 1994):
Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides.
2. The Mythical Man‐Month: Essays on Software Engineering (Addison‐Wesley, 1975): Frederick
P. Brooks Jr.
3. Edsger Wybe Dijkstra was a Dutch computer scientist who received the 1972 Turing Award for
fundamental contributions to developing programming languages.
4. James O. Coplien is an author, lecturer, and researcher in computer science.
5. Core J2EE Patterns: Best Practices and Design Strategies (Prentice Hall, 2003): Deepak Alur,
Dan Malks, John Crupi.
6. A Java‐based framework that provides many features including dependency injection and
7. Head First Design Patterns (O'Reilly, 2004): Eric Freeman, Elisabeth Robson, Bert Bates,
8. Rod Johnson is an Australian computer programmer who created the Spring framework.