By Antony Reynolds on Jan 30, 2009
Last week I received a heavy parcel through the post from Amazon containing Thomas Erls new book SOA Design Patterns. I have been interested in design patterns for many years and still regularly refer to my copy of the gang of four (Design Patterns: Elements of Reusable Object-Oriented Software). For those of you unaware of them, patterns provide a proven solution to a problem. The gang of four book identifies four essential elements in a pattern (from section 1.1 What is a Design Pattern?).
- A pattern name that extends our vocabularly when talking with colleagues, witness the common use of facade as a shorthand for the design principles of the facade pattern.
- A problem that is addressed by the pattern.
- A solution that describes an abstract design to solve the problem.
- The consequences of applying the pattern, its results and its impacts both positive and negative.
It is worth noting that patterns are not created, they are discovered. An important aspect of a pattern is that it should have been used in more than one solution. The gang of four identified and documented 23 design patterns focused on object oriented languages. The Thomas Erl book focuses as the name suggests on service oriented patterns. Some of these patterns are service oriented forms of the gang of four patterns. For example the service facade is an example of the facade pattern. However Thomas explains how the service facade works in a a SOA and gives detailed explanations of its trade offs and benefits all closely related to SOA, providing a lot of added value even to people already familiar with the facade pattern. The facade pattern in the gang of four covers 9 pages, in Thomas’ book it covers 12 pages but also includes a case study and is focused purely on SOA.
Think of the SOA Design Patterns as a cookbook of possibilities. They cover lots of different patterns, many of them contributed by other SOA gurus such as Oracles David Chappell. Use it as a reference book to see if there is a proven design approach that can solve some of your problems. Remember that is a guide to good design, not a guarantor.
Well worth adding to your library!