Patterns according to Gamma et al in Java.