patternCoder is free software. It is open-source, released under the GPL licence. This essentially means you are free to use and modify it as you wish.


patternCoder developers:
Michael Nairn
Jim Paterson
John Haddow
Kafai Cheng


patternCoder is an open-source project, hosted on Google Code. If you are interested in contributing to the ongoing development, please contact us.

About patternCoder

Design Patterns are ways to describe best practices, good designs, and capture experience in such a way that it is possible for others to reuse this experience. They help software developers resolve recurring problems encountered throughout all of software development.

patternCoder encapsulates knowledge of design patterns and basic class relationships, and of the techniques required for their implementation in Java. It guides students through a step-by-step process: select an appropriate pattern or relationship; give the classes which participate in the pattern names relevant to the current problem domain; and generate code for minimal Java class definitions which can then be explored and extended. It is written as an extension to BlueJ, The motivation is to to give students support with code implementation of class relationships and patterns within a familiar coding environment.

Our intention is to allow instructors to control the options and information given to students. Instructorscan easily add new patterns, and to change, for example, the wording of hints provided to the student, or the default methods provided in the generated classes. The steps in the wizard are defined by the content of XML documents known as pattern files, while the generated Java code is based on text files known as class templates. The pattern files have two functions:

  1. To provide information about the pattern and define each of the components that must be created as part of that pattern.
  2. To define the structure and sequence of the wizard process.

It is possible to edit files easily in any text editor, or in an xml authoring tool in the case of the pattern files. The tool is distributed with a basic starter set of design patterns and a set of basic binary classrelationships.

Example - implementing a basic whole-part relationship

patternCoder wizard steps