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