You may be curious about how a pattern author might approach outlining structure, implementation and purpose of a new pattern. A pattern is initially presented in the form of a rule that establishes a relationship between:
A system of forces that arises in that context and
A configuration that allows these forces to resolve themselves in context
With this in mind, let’s now take a look at a summary of the component elements for a design pattern. A design pattern should have a:
Pattern name and a description
Context outline – the contexts in which the pattern is effective in responding to the users needs.
Problem statement – a statement of the problem being addressed so we can understand the intent of the pattern.
Solution – a description of how the user’s problem is being solved in an understandable list of steps and perceptions.
Design – a description of the pattern’s design and in particular, the user’s behavior in interacting with it
Implementation – a guide to how the pattern would be implemented
Illustrations – a visual representation of classes in the pattern (e.g. a diagram)
Examples – an implementation of the pattern in a minimal form
Co-requisites – what other patterns may be needed to support use of the pattern being described?
Relations – what patterns does this pattern resemble? does it closely mimic any others?
Known usage – is the pattern being used in the wild? If so, where and how?
Discussions – the team or author’s thoughts on the exciting benefits of the pattern
Design patterns are quite a powerful approach to getting all of the developers in an organization or team on the same page when creating or maintaining solutions. If considering working on a pattern of your own, remember that although they may have a heavy initial cost in the planning and write-up phases, the value returned from that investment can be quite worth it. Always research thoroughly before working on new patterns however, as you may find it more beneficial to use or build on top of existing proven patterns than starting afresh.