Over time, patterns have appeared on many different topics, not all related to programming. Here is a list of patterns and pointers to other lists of patterns, to illustrate two things:
- Knowledge and experience in general can be packaged into patterns, often using the pattern form. Patterns are convenient for reuse, in any domain.
- There are already plenty of patterns, and they cover a really wide range of situations. Given the number of patterns available today, whatever your problem, you will likely find helpful patterns for it.
This should encourage you to search for existing patterns whenever you need additional insight, or just an already documented reference for what you’ve just done (documenting the design of software using patterns).
The list in this post will grow, but without the ambition of listing every possible pattern.
Here are two essential lists of books on patterns:
- Essential books on software patterns, posted some time ago on this blog
- Patterns Everywhere, a great listmania by Alessandro Ribeiro
Other books and/or websites focus on patterns for software development, each with a specialized perspective:
- Security Patterns The website and the book
- Workflow Patterns The website
- Soa Patterns The website and the book
- Implementation Patterns by Kent Beck
- Patterns for Parallel Programming by Timothy G. Mattson
- Refactoring to Patterns by Joshua Kerievsky
Please notice that while many patterns are to be applied directly to software design or source code, there are also many patterns about the process of building software.
User interfaces patterns
- A Pattern Library for Interaction Design by Martijn van Welie, with several links to other patterns sources
- The Yahoo! Design Pattern Library
- Designing Interfaces: Patterns for Effective Interaction Design by Jenifer Tidwell
- Interface Design Patterns website and the infodesignpatterns by Christian Behrens
- Presentation Patterns Wiki (book in preparation)
- xUnit Test Patterns: Refactoring Test Code
- Testing Object-Oriented Systems: Models, Patterns, and Tools
Probably any domain can benefit from using patterns to represent chunks of knowledge and experience. Here are some examples quite foreign to software developement:
Though this listing is far from extensive (there are many independently published articles on patterns everywhere), it shows that the pattern community has been quite active to mine as many patterns it could, and this knowledge has been carefully documented in the pattern form, ready for reuse in your next projects.
Of course you don’t need to know them all, not even read them all in advance. However it does help to be aware that for most problems, there probably already exists a few patterns that can prove helpful, and they are only an Internet search away from your needs!