How we did it:
For any feedback, any questions, any notes or just for chat - feel free to follow us on social networks
Ralph Johnson, Erich Gamma, John Vlissides, Richard Helm
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. 0201633612B07092001
This volume is a handbook for enterprise system developers, guiding them through the intricacies and lessons learned in enterprise application development. It provides proven solutions to the everyday problems facing information systems developers.
This book takes you beyond the PHP basics to the enterprise development practices used by professional programmers. Updated for PHP 5.3 with new sections on closures, namespaces, and continuous integration, this edition will teach you about object features such as abstract classes, reflection, interfaces, and error handling. You’ll also discover object tools to help you learn more about your classes, objects, and methods. Then you’ll move into design patterns and the principles that make patterns powerful. You’ll learn both classic design patterns and enterprise and database patterns with easy-to-follow examples. Finally, you’ll discover how to put it all into practice to help turn great code into successful projects. You’ll learn how to manage multiple developers with Subversion, and how to build and install using Phing and PEAR. You’ll also learn strategies for automated testing and building, including continuous integration. Taken together, these three elements—object fundamentals, design principles, and best practices—will help you develop elegant and rock-solid systems. What you’ll learn Learn to work with object fundamentals: writing classes and methods, instantiating objects, and creating powerful class hierarchies using inheritance. Master advanced object-oriented features, including static methods and properties. Learn how to manage error conditions with exceptions, and create abstract classes and interfaces. Understand and use design principles to deploy objects and classes effectively in your projects. Learn about design patterns, their purpose and structure, and the underlying principles that govern them. Discover a set of powerful patterns that you can deploy in your own projects. Learn about the tools and practices that can guarantee a successful project including unit testing; version control; build, installation, and package management; and continuous integration. Who this book is for This book is suitable for anyone with at least a basic knowledge of PHP who wants to use its object-oriented features in their projects. Those who already know their interfaces from their abstracts may well still find it hard to use these features in their projects. These users will benefit from the book’s emphasis on design. They will learn how to choose and combine the participants of a system, how to read design patterns, and how to use them in their code. Finally, this book is for PHP coders who want to learn about the practices and tools (version control, testing, continuous integration, etc.) that can make projects safe, elegant, and stable. Table of Contents PHP: Design and Management PHP and Objects Object Basics Advanced Features Object Tools Objects and Design What Are Design Patterns? Why Use Them? Some Pattern Principles Generating Objects Patterns for Flexible Object Programming Performing and Representing Tasks Enterprise Patterns Database Patterns Good (and Bad) Practice An Introduction to PEAR and Pyrus Generating Documentation with phpDocumentor Version Control with Subversion Testing with PHPUnit Automated Build with Phing Continuous Integration Objects, Patterns, Practice
The existing books on design patterns take a catalog approach, where they show the individual design patterns in isolation. This approach is fundamentally flawed, because you can't see how the design patterns actually function in the real world. Most programmers learn by looking at computer programs. Holub on Patterns: Learning Design Patterns by Looking at Code teaches you design patterns in exactly this way: by looking at computer programs and analyzing them in terms of the patterns that they use. Consequently, you learn how the patterns actually occur in the real world and how to apply the patterns to solve real problems. This book also looks at the broader context of object-oriented (OO) design and how patterns solve commonplace OO design problems. It covers many of the principles of OO design—principles not covered by most books on Java—and shows you how to apply these principles to make your code easier to maintain and debug.