Design Patterns Explained: A New Perspective on Object-Oriented Design (Software Patterns)
Design Patterns Explained: A New Perspective on Object-Oriented Design (Software Patterns) by Alan Shalloway and James R. Trott
- Binding:
- Paperback
- Number of Pages:
- 480
- ISBN:
- 0321247140
- Product Group:
- book
- Publisher:
- Addison Wesley
- Publication Date:
- Oct. 21, 2004
- BooksForGeeks.com ID:
- 2885
Explains concepts of Object-Oriented Design using analogies.
Reviews for Design Patterns Explained: A New Perspective on Object-Oriented Design (Software Patterns)
-
Not about design patterns, but about good design
Rated out of 5 stars, January 12th, 2010
The target of this book isn't to explain Design Patterns. It tries to teach you about good design by applying well-known principles (strong cohesion, weak coupling, ...) and by explaining several possibilities to order your thoughts.
The book is really easy to understand, too easy for me. The author repeats himself very often in the first half. The first third of the book is an slow introduction to what will come (his intentions, absolute basic thinking and definitions, an example which will be used later on and a chapter about design patterns in building).
These were the reasons I disliked the book in the beginning, it becomes constantly better after the Facade Pattern. He explains all patterns very well, so I think everybody will understand it. It can get somewhat boring if you know the pattern already or already have a responsibility-like thinking of objects (like I did).
Nonetheless I fould at least something interesting in every chapter, most often observations of his own practice were helpful.
What I found most interesting was the Bridge Pattern (really good explained) and the Analysis Matrix (a way to develop a good system from scratch, I liked it more than his CVA-approach [Commonality and Variability Analysis], because CVA is just proper OO-thinking).
His linkage to XP / agile development is generally just "works with agile development, too". What he refers to is most often the style of thinking.
To summarize: Even if I didn't found this book exciting from page to page, I fully agree with his opinion. Nothing in this book is false (I think thats an important thing to say about a technical book).
His quotes from other books are really gorgeous, they explain everything in short. His definitions made in the beginning are very good and neat (cohesion, coupling, aggregation, ...) I liked the recommodations in the end, it's always good to have an opinion on some books to know what to read next.
Whom I recommend this book:
He often refers to the old style of OO-thinking (nouns and verbs) and tell how to improve your OO-thinking to his new style. So I would recommend this book to everyone who already was involved in some projects, but doesn't know Design Patterns at all or is used to the old OO-thinking. I wouldn't recommend this book to beginners, because imho you need some experience to understand why patterns are helpfull or the way of thinking is superior.
If you already know some patterns and have a responsibility-like OO-thinking, this book will bore you most of the time. But like said, it's not wrong and there is a nugget around sometimes, e.g. the Analysis Matrix.
In the end I found it worth reading.
I expected more patterns, thats why I will read the classic Design patterns : elements of reusable object-oriented software next. -
Please read to improve your code
Rated out of 5 stars, October 12th, 2009
Really good narrative style that makes it easy to understand and, more importantly, remember the patterns listed in this book, and when and where to use them. -
overal good with some reservations
Rated out of 5 stars, August 12th, 2009
This book gives a survey of some of the more important (and easier to understand) patterns in use. It is written in a conversational style, and the material is motivated with simplified practical examples. It is clear, systematic, and on the pragmatic side.
There are few points which detract from it however:
(1) Many typos. Could be improved by employing a proofreader or subeditor.
(2) Code examples from the first edition of the book were given in java and c++, but the latter are absent from the second edition. These have now been placed on the authors' website, but are far from complete!
(3) Depending on your taste, there are few chapters of what is basically waffle which could be completely removed from the book without altering its technical content.
(4) There are features of UML used in later chapters which are not explained in their chapter on UML itself. -
Clear, concise introduction to an important idea
Rated out of 5 stars, August 12th, 2007
This is the first software engineering book I've read in years. As a project manager, I rarely become involved in software design, except perhaps to sit in on reviews, but it is useful and interesting to improve one's understanding of the other important disciplines involved in projects.
Design patterns had their origins in architecture, and the work of Christopher Alexander, who is an architect (of buildings) and has had enormous influence on design, in both computer science and architecture. A design pattern is a conceptual solution to a common problem, and a good working knowledge of the ones which have been identified, according to both this book and the developers I've asked while reading it, essential for any developer designing software now.
Rather than being a list of patterns, this book is a tutorial on good object-oriented design, showing how the patterns discussed are derived from design principles, and reinforcing those principles as it goes. Armed with a basic understanding of object-oriented ideas, and the ability to read the Java code fragments, the reader is lead through case studies and examples which introduce a dozen standard patterns and shown how good design practice leads to them. This is linked into agile programming ideas, and analysis techniques (particularly a matrix for analysing commonality and variability).
It's clearly written in that structured American textbook way, with review questions at the end and a companion website with answers, code examples and further information. It is well-pitched for the project manager who is a few years away from hands on technical work, but who would like a better understanding of the ideas involved. -
Fantastic! EVERY software engineer should have this book!.
Rated out of 5 stars, July 12th, 2005
I would strongly recommend that *every* student or practising software engineer should read this book, even "experts" in object-oriented or pattern-based programming.The authors essentially teach the reader how to design software better. They walk the reader through various approaches to a systems design example throughout the book, finally culminating with the approach of combining software patterns with CVA (Commonality and Variability Analysis). It is just so obvious but no-one ever seemed to think of it before.
From reading this book I now have a lot more clarity in thinking through the analysis and design of software and am producing implementations that are far more maintainable. For that I cannot thank the authors enough.
In summary : GET THIS BOOK!

