Catalog of Design Patterns - implemented in Java