One of the great things about the book is the way the authors explain concepts very simply using analogies rather than programming examples this has been very inspiring for a product I'm working on: an audio-only introduction to OOP and software development." Bruce Eckel ..".I would expect that readers with a basic understanding of object-oriented programming and design would find this book useful, before approaching design patterns completely. "Design Patterns Explained "complements the existing design patterns texts and may perform a very useful role, fitting between introductory texts such as UML Distilled and the more advanced patterns books." James Noble Leverage the quality and productivity benefits of patterns without the complexity! "Design Patterns Explained, Second Edition" is the field's simplest, clearest, most practical introduction to patterns. Using dozens of updated Java examples, it shows programmers and architects exactly how to use patterns to design, develop, and deliver software far more effectively. You'll start with a complete overview of the fundamental principles of patterns, and the role of object-oriented analysis and design in contemporary software development. Then, using easy-to-understand sample code, Alan Shalloway and James Trott illuminate dozens of today's most useful patterns: their underlying concepts, advantages, tradeoffs, implementation techniques, and pitfalls to avoid. Many patterns are accompanied by UML diagrams. Building on their best-selling First Edition, Shalloway and Trott have thoroughly updated this book to reflect new software design trends, patterns, and implementation techniques. Reflecting extensive reader feedback, they have deepened and clarified coverage throughout, and reorganized content for even greater ease of understanding. New and revamped coverage in this edition includes Better ways to start "thinking in patterns" How design patterns can facilitate agile development using eXtreme Programming and other methods How to use commonality and variability analysis to design application architectures The key role of testing into a patterns-driven development process How to use factories to instantiate and manage objects more effectively The Object-Pool Pattern a new pattern not identified by the "Gang of Four" New study/practice questions at the end of every chapter Gentle yet thorough, this book assumes no patterns experience whatsoever. It's the ideal "first book" on patterns, and a perfect complement to Gamma's classic "Design Patterns." If you're a programmer or architect who wants the clearest possible understanding of design patterns or if you've struggled to make them work for you read this book.
The book acts a general object oriented design book, not just for design patterns. It builds a way of thinking towards software design rather than just stating the information.
The book covers the basics of UML and object oriented design, some common patterns, and commonality and variability analysis.
While I was reading it, I didn't think the authors chose a very apt title for the book; after finishing it, I realized that the authors are trying to explain how patterns are derived. In fact, at one point in the book the authors point out that it is much more important that you understand the basic principles of design patterns than it is to memorize patterns and diagrams.
The material is presented clearly with plenty of examples and is easy to read.
If you're looking for a book on patterns, you'd be better off with something like Design Patterns: Elements of Reusable Object-Oriented Software, in fact I think this book would make a good segue to that one.
Anyone who wants to write beautiful, manageable and extendible code must read about design patterns. In this book you are also introduced to OOP. So it is a good start point for the OOP+design patterns beginner.
UPDATE: The second time I read it, it did not felt as good as the first time. I couldn't agree on some points and views of the author. It's better to read "Head First Design Patterns" for DP part and "Object-Oriented design and analysis with application" for the OOP introduction part. Changing my rating from 5 to 4.
After seeing Alan Shalloway speak in person, and enjoying it greatly, I decided to get his book. Having read Design Patterns, I found this book to add fairly little, using a large number of words.
The earlier chapters that present strategies for deriving design patterns from the principles of object oriented programming, and particularly the notion of "encapsulate what varies" are helpful, however.
I was expecting only the "explained" part in "design patterns explained" and I was pleasantly surprised when it talked more on loose coupling, high cohesion and other principles. The book takes you on a roller coaster of information and expands your horizons on a particular subject or a particular pattern. The way it explains individual patterns and the relationships between them was extremely helpful. Unfortunately, it was difficult to focus on the book at times and the main example was starting to get annoying. As much as I enjoyed the process of constructing the code for each pattern I sometimes felt that it was too much, that I forgot where the starting point was and where we were going. There were paragraphs I felt the need to read several times to get the hang of it and I felt the information could've been explained easier.
Very readable and useful as a textbook in a course on Design Patterns. Plenty of real-world examples, with enough attention to basic analysis and design principles and practices.
I think this was the 'just right' introduction to design patterns for me, having done object-oriented programming (OOP) in the industry for about 5 years. I think anyone having done OOP for a couple of years would benefit from it, including recent college graduates.
I really like the way the authors motivate each pattern that they discuss with a case study of sorts and kind of 'discover' the pattern before our eyes. Some of the philosophical and higher level discussions around patterns was a bit hard to grok, but I think this was because it is hard. The authors demonstrate a couple of different yet related ways to derive a design from a given problem and amply caution the reader against the misapplication of patterns. The authors admit that this book is not sufficient to make the reader an expert in how to always apply patterns the Right Way in the design, but I feel that it sets the reader on a good course.
My one-star ding stems from how sloppy the code samples were. Some parts of the code wouldn't have compiled, others would have but were wrong, still others were redundant. It's clear that no editor fluent in Java reviewed them. Then again, this was an issue only in one or two places where I thought the prose was a bit obtuse and I felt the need to look at the code to understand what they're saying.
Another possibly perceived shortcoming is that it does not contain all the patterns in the famous "Gang of Four" book, but this is by design. This book aspires to introduce the concept of patterns, and does a terrific job. They also have a few extra ones on the companion site .
As a last warning, the authors include only Java code snippets in the book proper, which to me is completely fine, since it is clear to me how to achieve the same results in C++, and there is C++ code snippets on the companion site too. I think this kind of partition makes the book flow better.
This book is not just an exegesis to GoF design patterns book, it's much more than that.
This book teaches the right use and right meaning of object oriented programming concepts. For example, in academics, inheritance is taught as a way to extend the behaviour of base class. While this is true from implementation perspective, this narrow definition will lead you to make improper usage of inheritance. It's not uncommon to see developers creating a sub-class for each special case, thereby creating huge inheritance trees and creating maintenance nightmares.
I benefitted a lot from this book, if you aren't a very experienced object oriented designer, you'll benefit from it too. If there's just one thing to take from this book, it's "Commonality and Variability Analysis".
Good introduction to design patterns and some of the higher principles of object-oriented design. Follows my own personal discovery of the fundamental principle of isolating change. I discovered it while I was reading 's , right after I had read the Gang of Four book in 1994.
A good book for junior developers, but I am way beyond it by now.
Good introduction to design patterns and some of the higher principles of object-oriented design. Follows my own personal discovery of the fundamental principle of isolating change. I discovered it while I was reading Wolfgang Pree's Design Patterns for Object-Oriented Software Development, right after I had read the Gang of Four book in 1994.
A good book for junior developers, but I am way beyond it by now.
One of the best books to learn object oriented design. not only design patterns. the way concepts are presented gives the reader the ability to understand the philosophy behind the patterns which improves the design skills. This is not a design patterns catalog so don't expect all patterns to be listed.