software design |
Aftersleep Books
|
||||||||||||||||||||
Pattern-Oriented Software Architecture Volume 2The following report compares books using the SERCount Rating (base on the result count from the search engine). |
|||||||||||||||||||||
|
Aftersleep Books - 2005-06-20 07:00:00 | © Copyright 2004 - www.aftersleep.com () | sitemap | top |
The first section is quite short, but covers the problem space nicely and provides the motivation for what follows. The presentation is greatly helped by a case study for applying patterns to a concurrent web server; this illustrates how individual patterns can be used to solve particular problems and provides a practical perspective for how to make use of what is in the remainder of the book.
The second section constitutes the majority of the book and describes a large collection of network and concurrency patterns. Here is where the real meat of the book can be found, with 17 different patterns plus variants. There is something for everyone here, such as interceptor, reactor, acceptor-connector, etc. The patterns are presented clearly, with ample UML diagrams to support the extensive explanations. What I liked particularly is that the presentation is both complete and fair. For example, the double-checked locking pattern isn't just presented as a panacea for singleton initialization. Instead, you get explicit warnings about memory coherency issues, together with examples for how to deal with them, so you don't go and implement something and then wonder why it doesn't work...
The final section of the book shows how to connect patterns into a pattern language, such that each pattern nicely fits into a larger architectural whole. There is also some speculation as to where patterns might be headed next. (According to the authors, we are nowhere near having exhausted the topic.)
Overall, I was really impressed with this book. The text provides extensive references to existing literature, so if you are interested in learning about a particular topic in more detail, you'll find plenty of material for further reading. And there is an index that actually works (which is a rarity these days).
While the language is lucid, the book is probably not something you want to read in a single sitting. Instead, it's the sort of book you browse through, picking up interesting things as you go, and then referring back to them when you need more detail. (I read the book over a number of weeks, digesting a chapter at a time when it suited me.)
Overall, I highly recommend this book. While much of the content has been published previously, it's difficult to find elsewhere and not as up to date. Here, you get everything in one place, presented in a form that works both for learning and as a reference.
If you are interested in programming distributed systems, don't miss this--there is no other book that covers the ground anywhere near as well!