Design Patterns CD http://lci.cs.ubbcluj.ro/~raduking/Books/Design%20Patterns/ [21/08/2002 19:01:33] Table of Contents Preface to CD Preface to Book Foreword Guide to Readers Introduction What Is a Design Pattern? l Design Patterns in Smalltalk MVC l Describing Design Patterns l The Catalog of Design Patterns l Organizing the Catalog l How Design Patterns Solve Design Problems l How to Select a Design Pattern l How to Use a Design Pattern l A Case Study: Designing a Document Editor Design Problems l Document Structure l Formatting l Embellishing the User Interface l Supporting Multiple Look-and-Feel Standards l Supporting Multiple Window Systems l User Operations l Spelling Checking and Hyphenation l Summary l Design Pattern Catalog Creational Patterns Abstract Factory l Builder l Factory Method l Prototype l Singleton l Discussion of Creational Patterns l Structural Patterns http://lci.cs.ubbcluj.ro/~raduking/Books/Design%20Patterns/contfs.htm (1 of 3) [21/08/2002 19:01:49] Table of Contents Adapter l Bridge l Composite l Decorator l Facade l Flyweight l Proxy l Discussion of Structural Patterns l Behavioral Patterns Chain of Responsibility l Command l Interpreter l Iterator l Mediator l Memento l Observer l State l Strategy l Template Method l Visitor l Discussion of Behavioral Patterns l Conclusion What to Expect from Design Patterns l A Brief History l The Pattern Community l An Invitation l A Parting Thought l Glossary Guide to Notation Class Diagram l Object Diagram l Interaction Diagram l Foundation Classes List l Iterator l ListIterator l Point l Rect l http://lci.cs.ubbcluj.ro/~raduking/Books/Design%20Patterns/contfs.htm (2 of 3) [21/08/2002 19:01:49] Table of Contents Bibliography Index Preface to CD http://lci.cs.ubbcluj.ro/~raduking/Books/Design%20Patterns/contfs.htm (3 of 3) [21/08/2002 19:01:49] Design Patterns CD Frequently Asked Questions (and Their Answers) How do I display the contents page of the Design Patterns CD? Go back to the main screen and click on the word "Contents." This will bring up the contents page that will let you navigate through the rest of the book. How do I link my documents to the CD? Because the Design Patterns CD uses framesets to provide important navigational tools, any hyperlinks you make to point to the CD should invoke the appropriate frameset file, not just the chapter file itself. The best method for obtaining the appropriate URL for use in your own Web page is to use one of the built-in navigational aids (such as the top banner or bottom pattern menu). However, rather than clicking the left mouse button, use the right button to display the menu of extended choices. Then select "Copy Link Location" in Netscape or "Copy Shortcut" in Internet Explorer. Put that link onto your cut buffer. You can now paste the URL into your own HTML document as an attribute to the anchor (<A>) tag. Which browsers can I use with the Design Patterns CD? The Design Patterns CD works best with Netscape Navigator on all platforms we have tested, including MS Windows, Unix, and Macintosh. The Design Patterns CD also works with Microsoft Internet Explorer on the MS Windows platform. Although it should be possible to use other browsers that support both Java and JavaScript, we have not tested the Design Patterns CD on those systems and do not provide technical support should problems occur. We strongly recommend that you use one of these browsers to view the Design Patterns CD. My computer resolution is 800x600. Is it okay if I use the version optimized for 640x480? Yes, the low-res and high-res versions of the CD contain exactly the same information. The only difference is that the formatting is done in the way that we believe will look best on high- and low-resolution systems. If you prefer the look of the low-res screens on your high-res system, you should not experience any problems. The reverse is not true, however. Using the 800x600 version on a 640x480 screen may cause you to lose information and is not recommended. Why do the applet contents disappear when I iconify and then de-iconify the search applet in Communicator 4.0/Win95? There is a bug in Netscape's Java Virtual Machine for Communicator 4.0 that causes many java applets to crash when they are iconified to the Windows 95 toolbar. Iconifying the search applet under Communicator 4.0 on Windows 95 will always result in a loss of search contents. If you encounter this behavior, simply close the applet and click on the Search button in the main frameset to restore it. http://lci.cs.ubbcluj.ro/~raduking/Books/Design%20Patterns/faq.htm (1 of 2) [21/08/2002 19:01:57] Design Patterns CD Why doesn't an exhaustive search always return the same results as an indexed search? There are two things that can cause the index search and exhaustive search to return different results. The first is that the exhaustive search is done over the raw HMTL so that if you the phrase "<B>describing</B> design patterns" is found in the HTML source, the exhaustive search won't match it. The indexer ignores the HTML tags so that it will match this phrase. The second is that an indexed search matches any section that contains all of the words entered in any order and with any words in-between. So for example this sentence in the conclusion matches on the indexed search: "Moreover, describing a system in terms of the design patterns..." The exhaustive search is much more strict; the words must be in the correct order, separated only by whitespace. How can I obtain updates, patches and news about the Design Patterns CD? Addison Wesley Longman maintains a web page for the Design Patterns CD at http://www.awl.com/cseng/titles/0-201-63498-8/. Updates, ancillary materials and all other information will be made available from this site. http://lci.cs.ubbcluj.ro/~raduking/Books/Design%20Patterns/faq.htm (2 of 2) [21/08/2002 19:01:57] Related Books Design Patterns: Elements of Reusable Object-Oriented Software Erich Gamma, Richard Helm, Ralph Johnson, and John Vlissides These four top-notch authors show how object-oriented systems exhibit recurring patterns and structures of objects that solve particular design problems, allowing designers to reuse successful designs and architectures without having to rediscover the design solutions. Central to this book is a catalog of 23 design patterns that have seen successful practical application and are representative of good object-oriented design. 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 in a larger design. ISBN 0-201-63442-2 Hardback 416 pages ©1995 The Design Patterns Smalltalk Companion Sherman Alpert, Kyle Brown, and Bobby Woolf In this new book, intended as a language companion to Design Patterns, noted Smalltalk and design patterns experts implement the 23 design patterns using Smalltalk code. Using the same successful format as Design Patterns, this book tailors the topic of design patterns to the Smalltalk programmer—no other book offers this. The authors have worked closely with the Design Patterns authors to ensure that this companion volume is held to the same high quality standards that made the original a bestseller. The full source code will be available on Addison-Wesley's web site. ISBN 0-201-18462-1 Hardback 448 pages ©1998 Analysis Patterns: Reusable Object Models Martin Fowler Analysis Patterns is an important contribution to the growing patterns literature. It captures profound object modeling expertise from different domains as a catalog of patterns. These domain patterns will help you solve challenging modeling problems across different domains. —Erich Gamma, Technical Director, Object Technology International. Martin Fowler shares with you his wealth of object modeling experience and his keen eye for solving repeating problems and transforming the solutions into reusable models. Analysis Patterns provides a catalog of patterns that have emerged in a wide range of domains, including trading, measurement, accounting, and organizational relationships. http://lci.cs.ubbcluj.ro/~raduking/Books/Design%20Patterns/related.htm (1 of 3) [21/08/2002 19:02:12] Related Books ISBN 0-201-89542-0 Hardback 672 pages ©1997 Concurrent Programming in Java™: Design Principles and Patterns Doug Lea Serious Java programmers interested in using this rich language to the fullest need to master thread programming to significantly enhance their ability to create high-performance Java applications. Taking a design pattern approach, this book offers numerous standard design techniques for creating and implementing Java structures that solve common concurrent programming challenges. You will learn how to initiate, control, and coordinate concurrent activities using the Java constructs java.lang.Thread, the keywords synchronized and volatile, and the methods wait, notify, and notifyAll. In addition, you will find detailed coverage of all aspects of thread programming, including such topics as containment and synchronization, deadlocks and conflicts, state-dependent action, control, handling user services, flow, and coordinated interaction. Code examples throughout help clarify the subtleties of the concurrent programming concepts discussed. ISBN 0-201-69581-2 Paperback 352 pages ©1997 Pattern Languages of Program Design Edited by James O. Coplien and Douglas C. Schmidt This book brings you the expertise and creativity of leaders in the design patterns field, including James Coplien, Douglas Schmidt, and Ward Cunningham. It explores many facets of design patterns and reveals how useful this technique can be in a wide range of fields and industries—client/server programming, software design, distributed and parallel processing, financial services, software reuse, and interface design. ISBN 0-201-60734-4 Paperback 576 pages ©1995 Pattern Languages of Program Design 2 John M. Vlissides, James O. Coplien, and Norman L. Kerth This volume, with contributions from the biggest names in the patterns community, is the second in a series documenting patterns for professional software developers. This new collection not only reveals the secrets of great software professionals, but also makes those secrets easy to apply. ISBN 0-201-89527-7 Paperback 624 pages ©1996 Pattern Languages of Program Design 3 http://lci.cs.ubbcluj.ro/~raduking/Books/Design%20Patterns/related.htm (2 of 3) [21/08/2002 19:02:12] Related Books Robert Martin, Dirk Riehle, and Frank Buschmann This third volume is the first to include international submissions, giving the editors even more high- quality essays from which to choose. This new collection builds upon the popular appeal of the first two volumes, keeping developers up-to-date on the latest uses and implementations of patterns. ISBN 0-201-31011-2 Paperback 688 pages ©1998 http://lci.cs.ubbcluj.ro/~raduking/Books/Design%20Patterns/related.htm (3 of 3) [21/08/2002 19:02:12] Preface to CD As we were writing Design Patterns, we knew the patterns we were describing had value because they had proven themselves in many different contexts. Our hope was that other software engineers would benefit from these patterns as much as we had. Now, three years after its debut, we find ourselves both grateful and thrilled by how the book has been received. Lots of people use it. Many tell us the patterns have helped them design and build better systems. Many others have been inspired to write their own patterns, and the pool of patterns is growing. And many have commented on what might be improved about the book and what they would like to see in the future. A recurring comment in all the feedback has been how well-suited the book is to hypertext. There are numerous cross-references, and chasing references is something a computer can do very well. Since much of the software development process takes place on computers, it would be natural to have a book like ours as an on-line resource. Observations like these got us excited about the potential of this medium. So when Mike Hendrickson approached us about turning the book into a CD-ROM, we jumped at the chance. Two years and several megabytes of e-mail later, we're delighted that you can finally obtain this edition, the Design Patterns CD, and put its unique capabilities to work. Now you can access a pattern from your computer even when someone has borrowed your book. You can search the text for key words and phrases. It's also considerably easier to incorporate parts of it in your own on-line documentation. And if you travel with a notebook computer, you can keep the book handy without lugging an extra two pounds of paper. Hypertext is a relatively new publishing venue, one we are learning to use just like everyone else. If you have ideas on how to improve this edition, please send them to [email protected]. If you have questions or suggestions concerning the patterns themselves, send them to the gang-of-4- [email protected] mailing list. (To subscribe, send e-mail to [email protected] with the subject "subscribe".) This list has quite a few readers, and many of them can answer questions as well as we can—and usually a lot faster! Also, be sure to check out the Patterns Home Page at http://hillside.net/patterns/. There you'll find other books and mailing lists on patterns, not to mention conference information and patterns published on-line. This CD entailed considerable design and implementation work. We are indebted to Mike Hendrickson and the team at Addison-Wesley for their on-going encouragement and support. Jeff Helgesen, Jason Jones, and Daniel Savarese garner many thanks for their development effort and for patience despite what must appear to have been our insatiable appetite for revision. A special acknowledgment is due IBM Research, which continues to underwrite much of this activity. We also thank the reviewers, including Robert Brunner, Sandeep Dani, Bob Koss, Scott Meyers, Stefan Schulz, and the Patterns Discussion Group at the University of Illinois Urbana-Champaign. Their advice led to at least one major redesign and several minor ones. Finally, we thank all who have taken time to comment on Design Patterns. Your feedback has been invaluable to us as we strive to better our understanding and presentation of this material. Zurich, Switzerland E.G. Sydney, Australia R.H. Urbana, Illinois R.J. http://lci.cs.ubbcluj.ro/~raduking/Books/Design%20Patterns/preffs.htm (1 of 2) [21/08/2002 19:02:40]