Os design patterns foram descritos em 1994 por um grupo de pesquisadores bem conhecidos, que ficou conhecido como Gang of Four (GoF)
- Erich Gamma
- John Vlissides
- Ralph Johnson
- Richard Helm
Foi a primeira vez que o conceito de “pattern” foi usado para descrever e codificar o conhecimento em desenvolvimento de software.
Foram descritos 23 “patterns”, que foram classificados em três grupos, de acordo com o propósito:
- Patterns Criacionais
- Patters Estruturais
- Patterns Comportamentais
| Purpose | ||||
|---|---|---|---|---|
| Criational | Structural | Behavioral | ||
| Scope | Class | 1. Factory Method | 1.1. Adapter (class) | 1. Interpreter |
| 2. Template Method | ||||
| Object | 2. Singleton | 1.2. Adapter (object) | 3. Observer | |
| 3. Prototype | 2. Proxy | 4. Strategy | ||
| 4. Builder | 3. Flyweigth | 5. Command | ||
| 5. Abstract Factory | 4. Composite | 6. Iterator | ||
| 5. Bridge | 7. Memento | |||
| 6. Facade | 8. State | |||
| 7. Decorator | 9. Mediator | |||
| 10. Visitor | ||||
| 11. Chain of Responsibility |
Os patterns também são classificados de acordo com o escopo (classe ou objeto):
- Patterns com escopo na classe são criados usando mecanismos estáticos e de tempo de compilação, como a herança.
- Patterns com escopo no objeto dependem de mecanismos dinâmicos e de tempo de execução.