Java Design Patterns (my experimentation with Head First Design Patterns)