J2EE Design Patterns: Quick Introduction
Join the DZone community and get the full member experience.Join For Free
What are Design Patterns?
A Design Patterns describe an optimal solution to a common recurring design problem within a specific context.
Every author defined Design Patterns in slight variations but the essence is the same. The best in my opinion is by Christopher Alexander – “Each pattern is a three-part rule, which expresses a relation between a certain context, a problem, and a solution”
What are some of the characteristics of Design Patterns?
- Patterns are observed through experience.
- Patterns are typically written in a structured format.
- Patterns prevent reinventing the wheel.
- Patterns exist at different levels of abstraction.
- Patterns undergo continuous improvement.
- Patterns are reusable artifacts.
- Patterns communicate designs and best practices.
- Patterns can be used together to solve a larger problem.
- Patterns have their own pros and cons
What are the Pros and Cons of Design Patterns?
- Combination of Patterns can offer reusable architectures / artifacts.
- Helps in the improvement of developer community by standardizing the design principles.
- Capture expert knowledge and design trade-offs on the recurring problems and make the expertise widely available.
- Reusability with out having to re-invent the wheel.
- Helps provide a high-level language for discussing design issues in software industry.
- Provides much of the design work upfront.
- Design Patterns can be applied at any point during the project life cycle.
- Design Patterns provide a standard vocabulary for software designers.
- Some of the Design Patterns are complex in nature.
- They are simply validated by experience and discussion.
- Design patterns may increase or decrease the understandability of a design or implementation.
- They can decrease understandability by adding indirection or increasing the amount of code.
Common Structure of Design Pattern
All Design Patterns adopt a common structure that presents various attributes for a given Pattern. In general, a Design Pattern consists of the following attributes -
- Context – Describes the environment under which the Pattern exists
- Problem – Describes the recurring design issue
- Forces – Helps us understand the driving forces of adopting a Design Pattern
- Solution – Describes the solution and its elements (Structure and Strategy) in detail
- Consequences – Identifies the pros and cons of using a pattern pattern
- Sample Code
- Related Patterns (if any)
Core J2EE Patterns – Best Practices and Design Strategies by Deepak Alur, John Crupi, Dan Malks.
Published at DZone with permission of Jagadeesh Motamarri, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Tactics and Strategies on Software Development: How To Reach Successful Software [Video]
How to Implement Istio in Multicloud and Multicluster
Extending Java APIs: Add Missing Features Without the Hassle
Decoding ChatGPT: The Concerns We All Should Be Aware Of