Design+Patterns

Definition
A design pattern is a formal way of documenting successful solutions to problems. The idea was introduced originally as an architectural concept by the architect Christopher Alexander and has been adapted for various other disciplines. Interaction design patterns, like other design patterns, are used mainly for capturing experience, helping to: Interaction design usually involves a large team with different disciplines. Interaction design patterns aim to enhance both internal and external team communication.
 * Avoid repeating errors
 * Acquaint new designers with interaction systems
 * Train and educate designers

Examples

 * Undo**: is one of the best known interaction design patterns.
 * **Problem**: Users may do actions they later want reversed.
 * **Context**: Most applications where restoring the state after an erroneous action is relatively hard to do by hand e.g. when it requires several actions.
 * **Principle**: Error Management
 * **Solution**: Let the users reverse their last actions. Maintain a queue of executed commands and allow the user to undo at least the last couple of actions. Show the history of commands so that users know what they have done. A command is either a chosen function or a meaningful grouping of actions, for example typing a sentence or changing the printer settings. It is important that all commands can be undone. If a command has side effects that cannot be undone, warn the user before executing the command and do not queue it. In some cases, it can be meaningful to allow specific actions from the queue to be deleted. When one action is removed from the queue, all following actions need to be undone first and then redone.
 * **Why**: Offering the possibility to always undo actions gives users a comforting feeling. They can explore, make mistakes and easily go some steps back, which facilitates learning the application's functionality. It also often eliminates the need for annoying warning messages since most actions will not be permanent.
 * **Examples**: Adobe Photoshop, Office applications.