The following pages document recurring classes of problems along with a description of a pattern for solving that type of problem.  The patterns represent the best known practices for solving the problem.  Patterns are given in the abstract to make them easier to apply to the many variations of a problem, but also include at least one concrete example to clarify the abstract idea and provide a boilerplate for generating a fresh solution.