Exploring Design Patterns in C#