By malks on Jan 24, 2006
In publishing Core J2EE Patterns, 2nd Edition, my coAuthors and I spent quite a bit of time thinking about how to categorize the patterns within our pattern catalog. We finally arrived at what I think is a decent attempt at cataloguing the 21 patterns within the three represented tiers. We even created the requisite pattern relationships diagram, which is not of too much practical value, though I have been told it's been helpful to some visual learners to tie some of the concepts together. One thing you'll notice if you have a quick look at the diagram's legend, which is color coded by tier, is that there are no patterns catalogued in the client tier. We focused on the most common patterns that we were seeing and several years ago we simply weren't coming across as much work in the client tier as in the presentation, business, and integration tiers.
In many of today's architectures, the client tier is getting more attention, especially with the burgeoning interest in Ajax, so it's worth considering how this would affect the existing categorization and classification of patterns as well as the introduction of emerging patterns in the client tier. When I think about the evolution of this or any catalog of patterns, I'm still impressed with how \*few\* patterns there really are in the world.
Ultimately, there appear to be reasonably few, enduring designs in this world, but an unending number of new ways to implement those designs over time. For this very reason, we have a limited number of patterns in our catalog, with numerous implementation strategies for each pattern. This is important to keep in mind as Rich Internet Applications (or whatever you choose to call dynamic, interactive, and responsive web-based applications) get an increasing amount of attention in the future. Will we see lots of new patterns? Maybe, but I believe we're more likely to see novel implementations of proven designs and approaches and one of our challenges will be updating and evolving our vocabulary to understand how these new patterns and implementation strategies fit into our existing models.