Guide to the Unified Process Featuring UML, Java and Design Patterns

There is a growing interest in what have become known generically as patterns; to be more precise, in design patterns. This is evidenced by the number of books now appearing on patterns (just try searching on "Patterns" and "Java" at http://www.amazon.com). One of these books in particular presents a very good introduction to the philosophy of patterns (Fowler, 1997). However, none of these attempts to present a sample pattern, highlight the many motivations behind the uptake of patterns or consider when they should be used. This chapter attempts to provide these along with a brief consideration of the strengths and weaknesses of patterns.
Historically, design patterns have their basis in the work of an architect who designed a language for encoding knowledge of the design and construction of buildings (Alexander et al., 1977; Alexander, 1979). The knowledge is described in terms of patterns that capture both a recurring architectural arrangement and a rule for how and when to apply this knowledge. That is, they incorporate knowledge about the design as well as the basic design relations.
This work was picked up by a number of researchers working within the object-oriented field. This then led to the exploration of how software frameworks can be documented using...