1. software engineering
  2. software design
  3. code (computer programming) / code
  4. Object-oriented
  5. interaction
  6. class (computer science) / class
  7. object (computer science) / object
  8. Architectural pattern (computer science) / Architectural patterns
  9. algorithms
  10. computation
  11. History
    1. Pattern (architecture) / architectural concept
    2. Christopher Alexander
    3. Kent Beck
    4. Ward Cunningham
    5. programming
    6. OOPSLA
    7. Tektronix
    8. computer science
    9. Pattern Languages of Programming
    10. Portland Pattern Repository
  12. Practice
    1. indirection
    2. software reuse
    3. software componentry / components
    4. documentation / documented
  13. Structure
    1. Design pattern (computer science)#Documentation / Documentation
    2. Domain specific patterns
      1. user interface
      2. information visualization
      3. //hillside.net/plop/pastconferences.html
  14. Classification and list
    1. Design pattern
    2. Creational pattern
    3. Structural pattern
    4. Behavioral pattern
    5. delegation (programming) / delegation
    6. aggregation (object-oriented programming) / aggregation
    7. consultation (object-oriented programming) / consultation
    8. coupling (computer science) / coupling
    9. cohesion (computer science) / cohesion
    10. inheritance (computer science) / inheritance
    11. interface (computer science) / interface
    12. polymorphism in object-oriented programming / polymorphism
    13. Architectural pattern (computer science) / architectural design pattern
    14. Model-View-Controller
  15. Documentation
    1. Martin Fowler
    2. Erich Gamma
    3. Richard Helm
    4. Ralph Johnson
    5. John Vlissides
    6. Design Patterns (book) / Design Patterns
    7. Unified Modeling Language#UML Class Diagram / Class diagram
    8. Interaction diagram
  16. Criticism
    1. Over-Engineering
      1. agile software development
    2. Workarounds for missing language features
      1. dynamic programming language
      2. C++
      3. Java (programming language) / Java
      4. multimethods
      5. Common Lisp
      6. delegation (programming) / delegation
      7. Objective C
      8. Self (programming language) / Self
      9. JavaScript
      10. Peter Norvig
      11. Dynamic programming language / dynamic languages
    3. Does not differ significantly from other abstractions
      1. abstraction (computer science) / abstraction
      2. Software architecture / architecture
      3. Design Patterns (book) / Gang of Four book
  17. See also
    1. Abstraction principle (programming)
    2. Anti-pattern
    3. Architectural pattern (computer science) / Architectural pattern
    4. Business pattern
    5. Distributed design patterns
    6. Double-chance function
    7. GRASP (Object Oriented Design)
    8. Interaction design pattern
    9. List of software development philosophies
    10. List of software engineering topics
    11. Pattern language
    12. Pattern theory
    13. Pedagogical patterns
    14. Refactoring
    15. Software development methodology
  18. References
  19. Further reading
  20. External links
    1. Directory of websites that provide pattern catalogs
    2. PerfectJPattern Open Source Project
    3. Jt
    4. Printable Design Patterns Quick Reference Cards
    5. 101 Design Patterns %26 Tips for Developers
    6. On Patterns and Pattern Languages
    7. Patterns for Scripted Applications
    8. Design Patterns Reference