Title: Design Patterns: Elements of Reusable Object-Oriented Software
Author(s): Erich Gamma, Richard Helm, Ralph Johnson, John M. Vlissides
Pages: 416
Table of Contents:1 IntroductionWhat 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 EditorDesign 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
3 Creational PatternsAbstract Factory
Builder
Factory Method
Prototype
Singleton
Discussion of Creational Patterns
4 Structural PatternAdapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Discussion of Structural Patterns
5 Behavioral PatternsChain of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
Discussion of Behavioral Patterns
6 ConclusionWhat to Expect from Design Patterns
A Brief History
The Pattern Community
An Invitation
A Parting Thought
Review:The book that started it all (well, not really, but it did for me!). You probably hear the term "design pattern" thrown around fairly often, you might even know a few. All the time I see design patterns treated as amazing things, like, "wow, you know design patterns."
Let me just first say that anyone who says that is an idiot. Design patterns, as explained by the book, are common solutions to common problems. Writing a program is closer to solving a set of problems than it is creating something from scratch. Knowing design patterns will help you solve these problems, as they are tested time and time again.
Design patterns are not magical pieces of code, they are not done for you. They are patterns that you fill in yourself, solving the problem. It requires an understanding of the pattern and the problem to be used properly.
That's where the book comes in. It goes over some of the most common patterns, and some of the first, and explains their usefulness. Even if you don't immediately start applying the concepts you learn, it will get the clocks turning, and in time you will be more architecturally-aware (I guarantee it).
The book is broken into two sections, the first is an overview and a "case study." The case study just shows how the design patterns are used to solve problems encountered. The second section is a reference of a few design patterns. No book could hope to contain every design pattern, as there are a ton of them, and new patterns are being discovered as the solutions to new problems every day.
If you are looking to start learning more about how to put together code rather than just how to code, this is the book for you.
Note: it is mainly focused on independent applications, and not all of it can be applied to the web, but I'd highly recommend it anyways.
Last Edit: Jun 22, 2009 4:00:15 GMT by Eric