A Beginner's Guide to Design Patterns