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. If you're looking for a book which will introduce you to object-oriented design (OOD), look elsewhere: this beautifully-written book is something quite different, a book of design patterns which prescribe simple solutions to the problems programmers face in object-oriented software design. This book will change the way you think about OOD with its clear text and examples so elegant that you'll kick yourself for not thinking of them yourself. With these insightful examples to learn from, you'll be able to make your own software more reusable, portable and understandable by learning how to use patterns to solve specific design problems. The authors liken Design Patterns to an architect's pattern book, filled with designs which have stood the test of time in decades of OO programming along with explanations of where each pattern could and should be used and the pros and cons of using the particular pattern in a larger design. Patterns include code for implementation in object-oriented languages like C++ and Smalltalk. This is the OO programmer's Bible, don't miss it. Preface Foreword Guide to Readers 1 Introduction What Is a Design Pattern? Design Patterns in Smalltalk MVC Describing Design Patterns The Catalog of Design Patterns Organizing the Catalog How Design Patterns Solve Design Problems How to Select a Design Pattern How to Use a Design Pattern 2 A Case Study: Designing a Document Editor Design Problems Document Structure Formatting Embellishing the User Interface Supporting Multiple Look-and-Feel Standards Supporting Multiple Window Systems User Operations Spelling Checking and Hyphenation Summary Design Pattern Catalog 3 Creational Patterns Abstract Factory Builder Factory Method Prototype Singleton Discussion of Creational Patterns 4 Structural Pattern Adapter Bridge Composite Decorator Facade Flyweight Proxy Discussion of Structural Patterns 5 Behavioral Patterns Chain of Responsibility Command Interpreter Iterator Mediator Memento Observer State Strategy Template Method Visitor Discussion of Behavioral Patterns 6 Conclusion What to Expect from Design Patterns A Brief History The Pattern Community An Invitation A Parting Thought Appendix A Glossary Appendix B Guide to Notation Class Diagram Object Diagram Interaction Diagram Appendix C Foundation Classes List Iterator ListIterator Point Rect Bibliography Index The Gang of Four's seminal catalog of 23 patterns to solve commonly occurring design problems Patterns allow designers to create more flexible, elegant, and ultimately reusable designs without having to rediscover the design solutions themselves. Highly influential, Design Patterns is a modern classic that introduces what patterns are and how they can help you design object-oriented software and provides a catalog of simple solutions for those already programming in at last one object-oriented programming language. 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 Is compiled from real systems and based on real-world examples Includes downloadable C++ source code that demonstrates how patterns can be implemented and Python From the preface: “Once you 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?” Four software designers present a catalog of simple and succinct solutions to commonly occurring design problems, using Smalltalk and C++ in example code. 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 go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems.--From publisher description. "Four software designers present a catalog of simple and succinct solutions to commonly occurring design problems, using Smalltalk and C++ in example code. 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 go on to systematically name, explain, evaluate, and catalog recurring designs in object-oriented systems. --" Résumé de l'éditeur Four top-notch authors present the first book containing a catalog of object-oriented design patterns. Readers will learn how to use design patterns in the object-oriented development process, how to solve specific design problems using patterns, and gain a common vocabulary for object-oriented design. Four top-notch authors present the first book containing a catalog of object-oriented design patterns. Readers can learn how to use design patterns in the object-oriented development process, solve specific design problems using patterns, and gain a common vocabulary for object-oriented design. Preface Foreward Guide to Readers Introduction What is a Design Pattern Design Patterns in Smalltalk MVC Describing Design Patterns The Catalog of Design Patterns Organizing the Catalog How Design Patterns Solve Design