Engineering Bookshelf

Software Design Books
Book Cover: Design Patterns: Elements of Reusable Object-Oriented Software

Design Patterns: Elements of Reusable Object-Oriented Software

by Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides

Publisher: Addison-Wesley Professional
ISBN: 0201633612

Check price @ amazon.com , amazon.ca , amazon.co.uk


Book Description

Capturing a wealth of experience about the design of object-oriented software, four top-notch designers present a catalog of simple and succinct solutions to commonly occurring design problems. Previously undocumented, these 23 patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves.

The authors begin by describing what patterns are and how they can help you design object-oriented software. They then go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. With Design Patterns as your guide, you will learn how these important patterns fit into the software development process, and how you can leverage them to solve your own design problems most efficiently.

Each pattern describes the circumstances in which it is applicable, when it can be applied in view of other design constraints, and the consequences and trade-offs of using the pattern within a larger design. All patterns are compiled from real systems and are based on real-world examples. Each pattern also includes code that demonstrates how it may be implemented in object-oriented programming languages like C++ or Smalltalk.

Book Reviews

This book isn't an introduction to object-oriented technology or design. Many books already do a good job of that...this isn't an advanced treatise either. It's a book of design patterns that describe simple and elegant solutions to specific problems in object-oriented software design....Once you understand the design patterns and have had an "Aha!" (and not just a "Huh?" experience with them, you won't ever think about object-oriented design in the same way. You'll have insights that can make your own designs more flexible, modular, reusable, and understandable which is why you're interested in object-oriented technology in the first place, right? - From the Preface

This is one of the best written and wonderfully insightful books that I have read in a great long while...this book establishes the legitimacy of patterns in the best way: not by argument, but by example. - C++ Report

About the Author

Dr. Erich Gamma is technical director at the Software Technology Center of Object Technology International in Zurich, Switzerland. Dr. Richard Helm is a member of the Object Technology Practice Group in the IBM Consulting Group in Sydney, Australia. Dr. Ralph Johnson is a faculty member at the University of Illinois at Urbana-Champaign's Computer Science Department.

John Vlissides is a member of the research staff at the IBM T. J. Watson Research Center in Hawthorne, New York. He has practiced object-oriented technology for more than a decade as a designer, implementer, researcher, lecturer, and consultant. In addition to co-authoring Design Patterns: Elements of Reusable Object-Oriented Software, he is co-editor of the book Pattern Languages of Program Design 2 (both from Addison-Wesley). He and the other co-authors of Design Patterns are recipients of the 1998 Dr. Dobb's Journal Excellence in Programming Award.


Customer Reviews

Thought process changing book
By SombraAla (Kansas, USA)

I'm a Java programmer who wanted to learn how to program OOP effectivly, but had very little actual experiance with designing and programming true OOP programs. This book managed to show me how object oriented programming could be used in so many ways, as well as showing me patterns that I could use later. For anyone that hasn't figured out OOP all that well, but knows the basics, I think this book is nice.

An approach to this software classic
By Jeffrey J. Breitman (Los Angeles, CA United States)

"Design Patterns" (GoF = Gang of Four) is a signicant and, in many ways, a difficult work for the modern reader (me) to digest. The material in this book is highly self-referential: to understand a particular design pattern, it is important to be familiar with many similar, if not all, design patterns.

I would like to offer a suggestion about an approach that worked well for me. As an introduction to the patterns field, I first read "Head First Design Patterns", which offers a highly competent but light-hearted presentation of the same patterns covered by GoF. The Head First book gave me a thorough overview of the patterns landscape, as well as gently drilling me on pattern application. The Head First book goes out of its way to provoke the thinking reader, while being the most entertaining computer science text that I have ever read.

With this introduction, I found "Design Patterns" to be a much more accessible and friendlier work.

Too bad I can not give 10 stars
By someone (Chicago, IL)

This is absolutely one of the best books on OO design. I am a System Archtect and I can't image how my design (and Java) would look like without applying the concepts and patterns described in this book. This book, IMHO, plays a much more important role and should enjoy a much higher reputation than the UML series written by the 3 Amigos.

This book is definitely not for those who still do not understand the virtue of the concepts presented in the book. This book is not for programmer level either(although they can still greatly benefit from the book to enter the next level). The examples in the book are in C++ but the patterns it describes is language independent. Those who really know Java(not just reading sth like Teach Yourself Java in XX days,weekends,in a nutshells, etc) should tell immediately that lots of patterns are already applied in Java, especially in J2EE. Knowing the patterns in the books not only make your design step up to the next level, but now also a MUST if you want to pass the perfessional certificate exam like SCEA. I have to say no one can claim they know OO design without knowing the concepts and patterns described in this book.

This is one of those few books in computer world that will receive more and more recognization as time gose by. In three years no one will even mention 90% of those books currently getting five stars, but this one, I have to say, will be in top in foreseeable future and much longer.

I totally agree that this book is a little bit hard to read. Please think it this way, anything you can learn in 10 minutes is useless and of little market value because anybody can do the same. Those who grasp the essence missed by the majority are distinguished and of high value....