What Are Design Patterns? A Simple Introduction For Beginners