This book does a great job of covering well known patterns and OOP paradigms in ColdFusion. By the end the reader should have a fairly good grasp on CFC instantiation, CFC design, constructors, the pseudo constructor and why to avoid it, information hiding, CFC scopes, inheritance, and design patterns such as beans, DAOs, gateways, and services. I started using all of the design patterns mentioned back in 2010. I learned from watching presentations, studying existing code, and trying them out on new projects. I would've much rather had one go-to source like this one. Reading it in 2014 was a great refresher either way.
I thought the section on services was the best one. The analogy of getting up to go to the kitchen and all the various processes involved got me to understand the concept better. I'm not sure if this was mentioned but the one important rule about services is to keep all business logic in the child objects. Services are supposed to be lean.
I sort of wish Matt would have covered more regarding ORM and how it can replace the need for a lot of the boilerplate code in the patterns mentioned above. While there is a lot of debate regarding ORM's viability and Adobe ColdFusion's implementation, it does essentially serve as a wrapper for much of the same functionality provided by beans, gateways, and services. The ORM object will have getters and setters to protect data (bean), one can save one record at a time via ORM (DAO), and you can always get back multiple records via the various ORM query methods (gateway). I'm not arguing for a comprehensive look at ColdFusion ORM since there is a book on that already. I'm thinking a few paragraphs would've sufficed.
At the very least there should have been a mention of code generation tools like Illudium PU-36 Code Generator. What I don't like about these OOP design patterns is they require massive amounts of boilerplate code that are a bore to write by hand. There's also the downside to constantly updating the code if you're in the middle of building out a new schema. Code generation tools look at existing tables and automatically build out all the necessary objects.
I also would've much rather seen more of the code samples in CFScript instead of the tag syntax. Perhaps at the time of writing tag syntax was more universally supported since CF 9 had just introduced nearly complete CFScript support. I read this book on the Kindle Paperwhite and the iPad 4, and the tag syntax just fits poorly within the narrow width. I imagine this is also a problem on the print version.
Overall, I think this book will benefit procedural programmers the most since it teaches you how to properly separate and organize various aspects of your application code. It also helps explain some of the jargon you'll come across when encountering OOP architectures for the first time.