In software engineering, a design pattern is a general repeatable solution to a commonly occurring problem in software design. A design pattern is not a finished design that can be transformed directly into code. It is a description or template for how to solve a problem that can be used in many different situations. Object-oriented design patterns typically show relationships and interactions between classes or objects, without specifying the final application classes or objects that are involved. Algorithms are not thought of as design patterns, since they solve computational problems rather than design problems.A pattern describes a proven solution to a recurring design problem, placing particular emphasis on the context and forces surrounding the problem, and the consequences and impact of the solution.
This provides a palette of patterns you can use in the context of designing Java 2 Platform, Enteprise Edition (J2EE) applications. Occasionally, new patterns will be added and new insights will be incorporated into the current patterns, so check back often for updates. Core J2EE Patterns provides more detail on J2EE patterns and is an excellent resource in addition to this website.
Why Use Patterns?
The core j2ee patterns are illustrated in the below diagram