08-11-2012, 02:08 PM
Introduction To Design Patterns
design.pdf (Size: 54.79 KB / Downloads: 69)
What Is A Pattern?
Current use comes from the work of the architect Christopher
Alexander
Alexander studied ways to improve the process of designing
buildings and urban areas
“Each pattern is a three-part rule, which expresses a relation
between a certain context, a problem and a solution.”
Hence, the common definition of a pattern: “A solution to a
problem in a context.”
Patterns can be applied to many different areas of human
endeavor, including software development
Why Patterns?
"Designing object-oriented software is hard and designing
reusable object-oriented software is even harder." - Erich Gamma
Experienced designers reuse solutions that have worked in the
past
Well-structured object-oriented systems have recurring patterns of
classes and objects
Knowledge of the patterns that have worked in the past allows a
designer to be more productive and the resulting designs to be
more flexible and reusable
Software Patterns History
1987 - Cunningham and Beck used Alexander’s ideas to develop
a small pattern language for Smalltalk
1990 - The Gang of Four (Gamma, Helm, Johnson and Vlissides)
begin work compiling a catalog of design patterns
1991 - Bruce Anderson gives first Patterns Workshop at
OOPSLA
1993 - Kent Beck and Grady Booch sponsor the first meeting of
what is now known as the Hillside Group
1994 - First Pattern Languages of Programs (PLoP) conference
1995 - The Gang of Four (GoF) publish the Design Patterns book
GoF Design Patterns
The GoF design patterns are in the middle of these levels of
abstraction
“A design pattern names, abstracts, and identifies key aspects of a
common design structure that makes it useful for creating a
reusable object-oriented design.”
The GoF design patterns are “descriptions of communicating
objects and classes that are customized to solve a general design
problem in a particular context.”
Benefits Of Design Patterns
Capture expertise and make it accessible to non-experts in a
standard form
Facilitate communication among developers by providing a
common language
Make it easier to reuse successful designs and avoid alternatives
that diminish reusability
Facilitate design modifications
Improve design documentation
Improve design understandability