Patterns in Java a catalog of reusable design patterns illustrated with UML - Grand, Mark (Wiley, 1998)