A design pattern in architecture and computer science is a formal way of documenting a solution to a design problem in a particular field of expertise.
Design patterns are a common reference in our line of work. People who discuss a pattern often draw strange looks from people who don’t about it (or who don’t know about patterns in general). Of course, there are dozens and dozens of design patterns just waiting for us to know them.
IMHO, today, the three following books are enough to resolve 99% of our architect’s everyday problems:
- First, of course, is the Gang of Four’s Design Patterns Elements of Reusable Object-Oriented Software. This one was the one which materialized the concept of Design Pattern itself and structured them in categories (creational, structural and behavioral). A must have for anyone dealing with software design in general.
- If one works in JEE environments, one should also have Core J2EE Patterns Best Practices and Design Strategies. According to me, this one is much less important because much of what is exposed relates to EJB2. Thus, these are not Design Patterns per se but methods to overcome the shortcomings of the technology. The patterns are no more relevent if one uses EJB3.
- Finally, with the maturity of ESB finally coming (thanks to SOA), a whole new category of Design Patterns has emerged, namely Messaging Design Patterns. This is covered by Enterprise Integration Patterns. I’m in the process of reading it, but I think it may be the new GOF.
The whole thing is not to know each Design Pattern by heart. But, if you know the general idea and the problems each solves, you can then dwelve further and look how it can be applied in these reference books (or online).
Do you know any other fundamental book about Design Pattern?