Take the struggle out of learning about design patterns! Through example-based teaching, The Joy of Patterns reveals the essence of design patterns as an advanced language for describing system design. This book illustrates how to build more efficient, robust, and reusable designs with this powerful programming paradigm. Design patterns have been used as integral techniques for creating better software, but getting started with design patterns bas never been easy. Beginning with a description of the rationale behind design patterns, the discussion moves on to an overview of the basic pattern form, and then to a brief review of object-oriented concepts. Following this crucial background, the author presents a series of system design examples from initial conception all the way through code, discussing key design goals and the pros and cons of using various design patterns. Code is presented in Java, C++, and Visual Basic. The reader will gain insight into the inherent forces at work in the application design and the most effective application of numerous core design patterns as solutions to recurring programming problems. You will read and learn about such important ideas and topics as: Patterns as the language of design and the building blocks of architecture; The value and use of many standard patterns in system design; Extensible software development and change management; Utilizing supporting patterns to prevent loose ends; Testing and deploying new behaviors; Understanding requirements and creating hinge points for entities that are likely to change. The Joy of Patterns examines the relationship between specific programming languages and language-independent design patterns. It also looks at the role of patterns in building systems from scratch through system maintenance and product evolution. With the background and deeper understanding harnessed from this book, you will have the ability to unleash the considerable power of design patterns and enhance the quality of your programming efforts.