RSS

Central Patterns Repository

Towards a central repository of Design Patterns

An authoritative central repository of Design Patterns does not exist.  There is a book called The Pattern Almanac 2000 by Linda Rising however this is no more than an index of patterns - nothing of substance except a one line descrtipion.  And furthermore, it leaves out hundreds if not thousands of patterns - scattered across books, websites and people’s code. 

2020 Update: Central repositories on the internet are now commonplace. For IDE plugins, programming language library packages (npm for Javascript, pypi for Python etc.), apps, software components for linux etc. Its more difficult to create such systems for design patterns because patterns are more nebulous - requiring textual descriptions rather concrete code. As such the best source of patterns is Awesome Design Patterns which links to all sorts of other web pages and resources incl. lists of patterns used in particular domains e.g. es6 design patterns, language specific patterns, cloud architecture patterns, Big Data patterns etc.

Prerequisites for a repository

Any new effort needs to have broad support and a way of contributing without having to go through vetting.  This way people can contribute their own patterns and the project can utilise the community.  Better to have too many patterns than not enough.  Perhaps a “moderated” category could be added for higher quality entries.

  • A specific “template” for inserting patterns would be a must.
  • A UML diagram (png) - also a must.
  • Code sample (any language / psuedo code) - highly desirable.  
  • You could have a page of thumbnails of uml diagrams - very enticing way to browse the repository.
  • Drop down tags for type of pattern - architectural, design, coding idiom.
  • Tags for related patterns - not sure how the references would work, perhaps like a wiki, so each pattern should have a unique id (no spaces).  e.g. Observer or MVC or NullObject etc.

On the copyrighted design pattern material in books

Getting all the patterns from published design patterns books would be a boon - even if we could at least get the basic UML and idea of each pattern - and leave the copyrighted content alone.  Existing patterns books are a huge source of material if we could mine them.  It could perhaps be pitched to authors as a way of stimulating book sales since people who want to learn more could buy the book via the usual link to Amazon etc.

Other ideas

It might be good to see the existing class libraries of the programming languages (e.g. Java, .NET, Python, Delphi and PHP) mined for patterns - and there is a real opportunity there to form pattern languages of how these patterns fit together within the one language platform. 

The repository should include architectural patterns, design patterns and language and coding patterns (sometimes known as idioms) - forming a wonderful continuum of detail.  Of course the essential ideas in the deep implementation detail would probably be found at the high level and vice vera, such is the nature of reality. :-)

In the absence of a central repository, here are some links to lists of design patterns and books.