This chapter is from the book

This chapter is from the book

Introduction To Patterns

This book is for developers who know Java and who have had some exposure to
the book Design Patterns (Gamma et al. 1995). The premise of this book is
that you want to

Deepen your understanding of the patterns that Design Patterns
describes

Build confidence in your ability to recognize these patterns

Strengthen your ability to apply these patterns in your own Java
programs

Why Patterns?

A pattern is a way of doing something, or a way of pursuing an intent. This
idea applies to cooking, making fireworks, developing software, and to any other
craft. In any craft that is mature or that is starting to mature, you can find
common, effective methods for achieving aims and solving problems in various
contexts. The community of people who practice a craft usually invent jargon
that helps them talk about their craft. This jargon often refers to patterns, or
standardized ways of achieving certain aims. Writers document these patterns,
helping to standardize the jargon. Writers also ensure that the accumulated
wisdom of a craft is available to future generations of practitioners.

Christopher Alexander was one of the first writers to encapsulate a
craft's best practices by documenting its patterns. His work relates to
architectureof buildings, not software. A Pattern Language: Towns,
Buildings, Construction (Alexander, Ishikawa, and Silverstein 1977) provides
patterns for architecting successful buildings and towns. Alexander's
writing is powerful and has influenced the software community, partially because
of the way he looks at intent.

You might state the intent of architectural patterns as "to design
buildings." But Alexander makes it clear that the intent of architectural
patterns is to serve and to inspire the people who will occupy buildings and
towns. Alexander's work showed that patterns are an excellent way to
capture and to convey the wisdom of a craft. He also established that properly
perceiving and documenting the intent of a craft is a critical, philosophical,
and elusive challenge.

The software community has resonated with Alexander's approach and has
created many books that document patterns of software development. These books
record best practices for software process, software analysis, and high-level
and class-level design. Table 1.1 lists books that record best practices in
various aspects of software development. This list of books is not
comprehensive, and new books appear every year. If you are choosing a book about
patterns to read you should spend some time reading reviews of available books
and try to select the book that will help you the most.