Design Patterns written out in C#