A Pattern-Enforcing Compiler (PEC) for Java: A Practical Way to Formally Specify Patterns

Howard Lovatt, Anthony M. Sloane, Dominic Verity. A Pattern-Enforcing Compiler (PEC) for Java: A Practical Way to Formally Specify Patterns. In Design Pattern Formalization Techniques. Idea Group Inc., Hershey, PA, USA, 2007.

Abstract

This chapter describes an extended compiler that formalizes patterns, which we call a pat- tern enforcing compiler (PEC). Developers use standard Java syntax to mark their classes as implementations of particular design patterns. The compiler is then able to use reflec- tion to check whether the classes do in fact adhere to the constraints of the patterns. The checking possible with our compiler starts with the obvious static adherence to constraints such as method presence, visibility, and naming. However, we go much further and support dynamic testing to check the runtime behavior of classes and code generation to assist in the implementation of complex patterns. The chapter gives examples of using the patterns supplied with our PEC and also examples of how to write your own patterns and have our PEC enforce these.