How to Read a Pattern

How to Read a Pattern

The patterns in this book have a more formal format than what you have read up to this point. Each pattern has six parts: name, background, problem, forces, solution, and other patterns to consider. See Figure for an example.

6. Every pattern has the same elements in identical order so that you can quickly find the information you need.


The pattern name is the name we gave the solution. It consists of a phrase that you can use in a sentence, such as "What is the name of that PAGE TEMPLATE (D1)?" Each pattern name is written in sMALL CAPITAL LETTERS, so you can quickly identify it on a page. Each pattern also has a pattern number, such as A9. The letter identifies the group to which the pattern belongs. Throughout the book we also flag patterns in the margins with small callouts (such as A9). These callouts are also color-coded to match the corresponding pattern group. Each pattern group is also color-coded on the edge of the page so that you can find the group you want by looking at the edge of the book. Following the pattern name is the sensitizing image, a sample implementation of the solution. It shows how the solution might appear on a finished site.

Next comes the background, which provides context for the pattern, describing any other patterns that lead to this pattern and how they are related, as well as the scope of this pattern.

The next part is the problem, a concise statement, in boldface, of the specific problem that this pattern addresses.

The forces follow the problem, describing it in more detail, examining how people, their tasks, the technology, and society affect the design problem.

Next is the solution. Also set in boldface, the solution is a succinct statement of how to solve the problem. We also provide a sketch so that you can visualize the solution.

Finally, we discuss the other patterns to consider. Here we recommend more detailed patterns that help complete this pattern. You should examine and choose these according to your needs.

     Python   SQL   Java   php   Perl 
     game development   web development   internet   *nix   graphics   hardware 
     telecommunications   C++ 
     Flash   Active Directory   Windows