Guideline: Design Pattern
A design pattern represents a generalize solution to a commonly occurring problem. Every pattern has costs and benefits. The key to good pattern selection is to find a pattern that solves the problem with the desired optimization and with an acceptable cost.
Relationships
Main Description

A design pattern is a generalized solution to a commonly occurring problem. Put another way, it is a parameterized collaboration at a specific level of abstraction; a parameterized collaboration consists of pattern elements (the "glue' that binds the collaboration together), formal parameters (which will be replaced by the actual parameters or classes from the model during instantiation of the pattern), and relations among the elements.  A pattern is normally represented on a class diagram showing the pattern elements and formal parameters plus one or more sequence diagrams depicting how the elements collaborate together to achieve the pattern's goals.   

In terms of architecture, the patterns are strategic in the sense that they apply to most or all of the system. Architectural design patterns can be found in references such as DOU02 or BUS96.

At the mechanistic design level, the scope of design decisions is "collaboration-wide". That is, take an object analysis (PIM) collaboration and optimize how the elements of that collaboration interact. Good references include DOU04 and GAM95.

The scope for detailed design is the individual class. Optimizations here are small in scope, and the generalized solutions are called idioms more often than patterns. Nevertheless, there any many generalized solutions for recurring problems such as state machine structuring. 

For more information see DOU99 or the use of the specific target language, such as C++ in MEY05.