Design Patterns in C# and NET