Exploring Design Patterns for Object-Oriented Programming — Programming Keynou