Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd Edition)
|
| List Price: | $54.99 |
| Price: | $44.95 & eligible for FREE Super Saver Shipping on orders over $25. Details |
Availability: Usually ships in 24 hours
Ships from and sold by Amazon.com
62 new or used available from $24.00
Average customer review:Product Description
"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.
Product Details
- Amazon Sales Rank: #337136 in Books
- Published on: 2004-10-22
- Original language: English
- Number of items: 1
- Binding: Paperback
- 480 pages
Editorial Reviews
From the Inside Flap
Should you buy the second edition if you already own the first?
December, 2000updated May, 2004From Artificial Intelligence to Patterns to True Object OrientationMy journey into design patterns had a different startingpoint than Alan’s but we have reached the same conclusions: · Pattern-based analyses make you a more effective and efficientanalyst because they let you deal with your models more abstractly and becausethey represent the collected experiences of many other analysts. · Patterns help people to learn principles of object orientation.The patterns help to explain why we do what we do with objects. I started my career in artificial intelligence (AI) creatingrule-based expert systems. This involves listening to experts and creatingmodels of their decision-making processes and then coding these models intorules in a knowledge-based system. As I built these systems, I began to seerepeating themes: in common types of problems, experts tended to work in similarways. For example, experts who diagnose problems with equipment tend to lookfor simple, quick fixes first, then they get more systematic, breaking theproblem into component parts; but in their systematic diagnosis, they tend totry first inexpensive tests or tests that will eliminate broad classes ofproblems before other kinds of tests. This was true whether we were diagnosingproblems in a computer or a piece of oil field equipment. Today, I would call these recurring themes patterns. Intuitively, I began to look for these recurring themes as I was designing newexpert systems. My mind was open and friendly to the idea of patterns, eventhough I did not know what they were. Then, in 1994, I discovered that researchers in Europe hadcodified these patterns of expert behavior and put them into a package thatthey called Knowledge Analysis and Design Support, or KADS. Dr. KarenGardner, a most gifted analyst, modeler, mentor, and human being, began toapply KADS to her work in the United States. She extended the European’s work to apply KADS to object-orientedsystems. She opened my eyes to an entire world of pattern-based analysis anddesign that was forming in the software world, in large part due to ChristopherAlexander’s work. Her book, Cognitive Patterns (CambridgeUniversity Press, 1998), describes this work. Suddenly, I had a structure for modeling expert behaviors withoutgetting trapped by the complexities and exceptions too early. I was able tocomplete my next three projects in less time, with less rework, and withgreater end-user satisfaction, because: · I could design modelsmore quickly because the patterns predicted for me what ought to be there. Theytold me what the essential objects were and what to pay special attention to.· I was able to communicatemuch more effectively with experts because we had a more structured way to dealwith the details and exceptions. · The patterns allowed meto develop better end-user training for my system because the patternspredicted the most important features of the system. This last point is significant. Patterns help end-usersunderstand systems because they provide the context for the system, why we aredoing things in a certain way. We can use patterns to describe the guidingprinciples and strategies of the system. And we can use patterns to develop thebest examples to help end-users understand the system. I was hooked.So, when a design patterns study group started at my place ofemployment, I was eager to go. This is where I met Alan who had reached asimilar point in his work as an object-oriented designer and mentor. The resultis this book. Since writing the first edition, I have learned just how deeplythis approach to analysis can get into your head. I have been involved in manydifferent sorts of projects, many outside of software development. I look at systemsof people working together, exchanging knowledge, exchanging ideas, living inremote places. The principles of patterns and object-orientation have stood mewell here, too. Just as in computer systems, there is much efficiency to begained by reducing the dependencies between work systems. I hope that the principles in this book help you in your ownjourney to become a more effective and efficient analyst.James R. Trott
December, 2000updated May, 2004A Note About Conventions Used in This BookIn the writing of this book, we had to make severalchoices about style and convention. Some of our choices have surprised ourreaders. So, it is worth a few comments about why we have chosen to do what wehave done. Approach Rationale First person voice This book is a collaborative effort between two authors. We debated and refined our ideas to find the best ways to explain these concepts. Alan tried them out in his courses and we refined some more. We chose to use the first person singular in the body of this book because it allows us to tell the story in what we hope is a more engaging and natural style. Scanning text We have tried to make this book easy to scan so that you can get the main points even if you do not read the body, or so that you can quickly find the information you need. We make significant use of tables and bulleted lists. We provide text in the outside margin that summarizes paragraphs. With the discussion of each pattern, we provide a summary table of the key features of the pattern. Our hope is that these will make the book that much more accessible. Code examples This book is about analysis and design more than implementation. Our intent is to help you think about crafting good designs based on the insights and best practices of the object-oriented community, as expressed in design patterns. One of the challenges for all of us programmers is to avoid going to the implementation too early, doing before thinking. Knowing this, we have purposefully tried to stay away from too much discussion on implementation. Our code examples may seem a bit lightweight and fragmentary. Specifically, we never provide error checking in the code. This is because we are trying to use the code to illustrate concepts.Examples in C++ and C# are also present at this site. Strategies and
principles Ours is an introductory book. It will help you be able to get up to speed quickly with design patterns. You will understand the principles and strategies that motivate design patterns. After reading this book, you can go on to a more scholarly or a reference book. The last chapter will point you to many of the references that we have found useful. Show breadth and give a taste We are trying to give you a taste for design patterns, to expose you to the breadth of the pattern world but not go into depth in any of them (see the previous point). Our thought was this: If you brought someone to the USA for a two-week visit, what would you show them? Maybe a few sites to help them get familiar with architectures, communities, the feel of cities and the vast spaces that separate them, freeways, and coffee shops. But you would not be able to show them everything. To fill in their knowledge, you might choose to show them slide shows of many other sites and cities to give them a taste of the country. Then, they could make plans for future visits. We are showing you the major sites in design patterns and then giving you tastes of other areas so that you can plan your own journey into
patterns. How to read Java code if you are a C# developer All of the code examples in this book are written in Java. If you do not have experience with Java but can read C#, here is what you need to know: Java uses the words extends and implements to denote a class that extends another class or one that implements an interface, rather than the colon (":"). which is used for both purposes in C#.. Hence, in Java, you would see: public class NewClass extends BaseClass or public class NewClass implements AnInterface while in C# you would see: public class NewClass : BaseClass or public class NewClass : AnInterface All methods are virtual in Java and therefore you don’t specify whether they are new or overridden. There are no such keywords in Java, all subclass methods override any methods they reimplement from a base class. Although there are other differences, they won’t show up in our code examples. How to read Java code if you are a C++ developer This is a little more difficult, but not much more. The most obvious difference is the lack of header files. But how to read the combined header-code file is self-evident. In addition to the C# differences, Java never stores objects on the stack. Java stores objects in heap storage and stores variables that hold references (pointers) to objects on the stack. Every object must be created with a “new”. Hence, in Java you would see: MyClass anObject= new MyClass(); anObject.someMethod(); while in C++ you’d see: MyClass *anObject= new MyClass(); anObject->someMethod(); Thus, Java code looks like C++ code if you add a ‘*’ in the declaration of every variable name that references an object and convert the ‘.’ to a ‘->’. FeedbackDesign patterns are a work in progress, a conversationamong practitioners who discover best practices, who discover fundamentalprinciples in object orientation.We value your feedback on this book:· What did we do well or poorly?· Are there errors that need to be corrected?·New in the Second EditionThis second edition represents several changes andimprovements over the first edition. It reflects what we have learned fromusing and teaching design patterns over the last several years as well as thegenerous and valuable feedback we have received from our readers. Here is a highlight of changes: · Reorders chapters, moving the Strategy pattern earlier· Expands the discussion about Commonality and Variability Analysis(CVA)· Adds a synthesis of eXtreme Programming and design patterns· Makes all code examples complete rather than notional orfragments. All code is in Java. The website also has C# and C++ examples· Explains why the use of factories as objectinstantiators/managers is extremely useful.· Added one design pattern not in the Gang of Four: the Object Poolpattern.· Added a discussion of the pitfalls of patterns and the caution totreat patterns as guides to help you think. Patterns are not truth! We also made numerous small corrections in grammar andstyle.
From the Back Cover
"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.
© Copyright Pearson Education. All rights reserved.
About the Author
Alan Shalloway is founder, CEO, and principal consultant of Net Objectives, an object-oriented consulting and training organization. An object-oriented consultant and software developer for over 20 years, he is a frequent speaker at leading development conferences, including SD Expo, Java One, OOP, and OOPSLA. He is a certified Scrum master. He is co-author of An Introduction to XML and its Family of Technologies. Shalloway holds a master's degree in computer science from MIT.
James R. Trott currently works as a senior consultant for a large financial institution in the Pacific Northwest. He has used object-oriented and pattern-based analysis techniques throughout his 20-year career in knowledge management and knowledge engineering. He holds a master of science in applied mathematics, an MBA, and a master of arts in intercultural studies.
© Copyright Pearson Education. All rights reserved.
Customer Reviews
even better than the first and deals with current issues too
I read the first edition of the book and was greatly pleased by it. I loved the way it described the reasons patterns were good. In other words, although it clearly explained the patterns in the book, it also explained the underlying approach used by the people who wrote the software that later became described as patterns. The book helped me think like these developers instead of just using solutions they had come up with.
I also liked the way the authors showed how to use the patterns in the real world. I had always thought you used the patterns as solutions to recurring problems. However, the authors described how the patterns were really about a new way to think of the problem you had to solve.
As good as the first edition was, however, it left some gaps. In particular, while the domain analysis approach they espouse called commonality - variability analysis looks great, not enough information on how to actually use it was presented. Also, as XP has become more popular, I had been wondering about how patterns and XP fit into things.
The book addresses these and some additional issues incredibly well. (...)
Overall, I give this 2 thumbs up and recommend reading it even if you've read the first one. It is a much more involved book than the first with new chapters and improvements on the existing ones.
Nice option for getting started correctly with patterns...
Trying to understand design patterns based on most texts can be as painful as poking yourself in the eye. The book Design Patterns Explained - A New Perspective on Object-Oriented Design (2nd Edition) by Alan Shalloway and James R. Trott is considerably easier on your eye and your pain threshold...
Chapter List:
Part 1 - An Introduction to Object-Oriented Software Development: The Object-Oriented Paradigm; The UML - The Unified Modeling Language
Part 2 - The Limitations of Traditional Object-Oriented Design: A Problem That Cries Out for Flexible Code; A Standard Object-Oriented Solution
Part 3 - Design Patterns: An Introduction to Design Patterns; The Facade Pattern; The Adapter Pattern; Expanding Our Horizons; The Strategy Pattern; The Bridge Pattern; The Abstract Factory Pattern
Part 4 - Putting It All Together - Thinking In Patterns: How Do Experts Design?; Solving the CAD/CAM Problem with Patterns
Part 5 - Toward a New Paradigm of Design: The Principles and Strategies of Design Patterns; Commonality and Variability Analysis; The Analysis Matrix; The Decorator Pattern
Part 6 - Other Values Of Patterns: The Observer Pattern; The Template Method Pattern
Part 7 - Factories: Lessons from Design Patterns - Factories; The Singleton Pattern and the Double-Checked Locking Pattern; The Object Pool Pattern; The Factory Method Pattern; Summary of Factories
Part 8 - Endings and Beginnings: Design Patterns Reviewed - A Summation and a Beginning; Bibliography; Index
The traditional definitive text for design patterns was written by the Gang of Four. It goes into great detail, but it can be very abstract and hard to put into practical terms for beginners. Design Patterns Explained departs from the largely theoretical information and tries to get as concrete and as practical as possible. The authors pick a number of useful patterns and concentrate on those few entries as opposed to trying to cover everything. They put forth a few case studies and use those to explain the pattern being discussed. This tends to make it much easier to understand why the pattern works well for the problem at hand, and how it translates into Java code. Also, it's written in first-person format with plenty of personal insights and opinions. This also helps to make the text much more readable than most.
In addition to just covering the patterns and how they are coded, the authors also talk about the mindset needed to think and design in patterns. This is an aspect of design patterns that I normally don't see covered well (if at all) in most other books. If you combine the focus on thinking in patterns along with the practical information on the most common ones, you get a book that delivers quite a bit more value than most in this niche.
While any serious design pattern student will want to get the Gang of Four book, this volume would be a much better way to get started...
More than just a book on patterns
I don't write reviews often but this book was so good that I felt compelled to do so. It's not just a book about design patterns but also about the thought processes that lead to them. After reading this book (the 2nd edition), I was able to find and fix the flaws I knew I had in one of my existing program designs. By learning to isolate concepts that vary, you can create loosley coupled designs that are easy to modify and extend. Thinking in patterns allows you to see the bigger picture in your design without getting caught up in the details. By having a more conceptual view of your software, you can borrow ideas from time tested solutions.
Highly Recommended!




