Java Design Patterns


Design patterns in software domain are specific receipts allowing construction of applications using blocks of code that is known and well understood by wide range of software engineers. Usually patterns are something more than few specific data structures or functions, otherwise you could just re-use some public implementation. Instead you need to learn definition of each of patterns and then you will be able to understand software using it.

There are the following pattern types defined: creational: define how objects are created behavioral: define how objects interact with each other * structural: define object composition

For longer description see Design Patterns -

Universal design patterns

There is a class of patterns defined once by "Gang Of Four" - see book description below. These patterns can be used in any language and do not depend on used framework or technology.



JEE patterns

While developing software for JEE platform you can step on software which uses JEE-specific design patterns. Below you can find resources related to that domain.


  • "EJB Design Patterns: Advanced Patterns, Processes, and Idioms" - Floyd Marinescu, 2002
  • Core J2EE Patterns - Deepak Alur, John Crupi, Dan Malks, 2004
  • "Professional Java EE Design Patterns" - Murat Yener / Alex Theedom / Reza Rahman, 2014
  • "Java Enterprise Design Patterns" - Mark Grand, 2002
  • "J2EE Best Practices. Java Design Patterns, Automation, and Performance" - Darren Broemmer, 2003
  • "Patterns of Enterprise Application Architecture" - Martin Fowler, 2002
  • "Real World Java EE Patterns" - Adam Bien, 2012