Introduction Design patterns are generic solutions to classic problems encountered in software development and many other fields. As a software developer, knowing them often means having a good grounding in computer science. Of course, it's not enoug...