Learning and practicing Design Patterns